我刚刚更新到Xcode8和iOS 10 (使用传统的Swift语言版本)。
尝试重新编译我的项目是一件痛苦的事情,甚至仍然使用旧的Swift语法。这一次,我的一个函数使用了NSBundle(forClass: self.dynamicType),但是现在看起来.dynamicType被弃用了,Xcode甚至不想编译它。
他的建议是使用type(of: self),但也失败了。有人知道解决方案吗?谢谢。
发布于 2016-09-22 17:25:59
@dfri answer非常适合Swift 3。
关于Swift 2.3,我的解决方案是清理Xcode (Command+Option+Shift+K)并删除~/Library/Developer/Xcode/DerivedData中的所有内容。这个问题不会立即消失,但过一段时间它就会停止给出这个错误。
也许这是一个bug,毕竟我们是在8.0中。我希望它在下一个版本中得到修复。
谢谢大家。
发布于 2016-09-15 00:31:49
(下面的结论适用于Swift 3;但不是传统的Swift语言版本(2.3),因此它没有回答OP的问题,但对Swift 3用户来说可能是有价值的)
正如你在问题中提到的,现在(Swift 3)为了支持type(of:)而弃用了dynamicType。此外:
NSBundle已重命名为Bundle.init(for:).的init(forClass:)初始化程序已重命名为Bundle
考虑到这些更改,对于Swift 3,您可以通过以下方式初始化(或获取与特定类关联的现有实例) Bundle对象:
class Foo {
func bar() -> () {
let bundle = Bundle(for: type(of: self))
// ...
}
}https://stackoverflow.com/questions/39495021
复制相似问题