我刚刚更新到Xcode 8和iOS 10(使用传统的Swift语言版本)。
尝试再次编译我的项目一直是一个痛苦,甚至仍然使用旧的Swift语法。这次我的一个函数使用NSBundle(forClass: self.dynamicType)
,但现在看来.dynamicType
已被弃用,Xcode甚至不想编译它。
他的建议是使用type(of: self)
,但也失败了。谁知道解决方案?感谢。
答案 0 :(得分:34)
(以下内容适用于Swift 3;不适用于旧版Swift语言版本(2.3),因此它不能回答OP的问题,但对Swift 3用户来说可能很有价值,尽管如此)
正如您的问题中所述,dynamicType
现在(Swift 3)已被弃用,而不是type(of:)
。另外:
NSBundle
已重命名为Bundle
。init(forClass:)
的{{1}}初始值设定项已重命名为Bundle
。考虑到这些变化,对于Swift 3,您可以通过以下方式初始化(或获取与特定类关联的现有实例)init(for:)
对象:
Bundle
答案 1 :(得分:1)
@dfri回答非常适合Swift 3。
关于Swift 2.3,我的解决方案是清理Xcode(Command + Option + Shift + K)并删除~/Library/Developer/Xcode/DerivedData
中的所有内容。问题不会立即消失,但一段时间后它将停止发出错误。
也许这是一个错误,毕竟我们在8.0。我希望它能在下一版本中修复。
谢谢大家。