xcode 让编译器告诉我两个变量不能有相同的值

polkgigr  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(102)

我有一个需要加载到我的应用程序中的对象列表。但是加载顺序很重要。我创建了一个var,它是每个对象的一部分,指示加载顺序,其中最小的数字首先加载。然后我设置默认值为9999。我可以手动设置每个对象的这个值并覆盖默认值。目前这就是我所处的位置。
如果我添加了更多的对象,而这些对象将来需要按照特定的顺序加载,我希望确保没有冲突。在我看来,我可以通过使对象上的每个加载顺序编号唯一来实现这一点(即所有加载顺序变量中没有重复的编号)。
如果Xcode检测到任何符合协议的对象与任何其他符合协议的对象在该协议的变量上具有相同的值,是否有办法使Xcode抛出错误或警告?

xdnvmnnf

xdnvmnnf1#

好吧,你可以按照你想要加载的顺序列出一个数组常量中的所有对象,并且完全放弃加载顺序属性:

let objectsToLoad = [
    ObjectDescriptor("hello"),
    ObjectDescriptor("world"),
]

但是,如果您在不同的地方定义了对象,并且不希望使用一个统一的数组文字来列出所有对象,那么我认为您无法从编译器(或链接器)获得帮助。
几个月后,当Swift有了宏,你可能会从编译器或链接器那里得到帮助。策略是使用一个宏将每个加载顺序常量 Package 在一个宏中,该宏还生成一些名称包含该常量的类型定义,例如enum _LoadOrder_1 {}enum _LoadOrder_357 {}等。然后,如果你有一个重复的,编译器或链接器将由于单个标识符的多个定义而失败。

相关问题