我刚刚更新到Xcode 8和iOS 10(使用传统的Swift语言版本).
试图再次编译我的项目是一个痛苦,甚至仍然使用旧的Swift语法.这次我的一个函数使用NSBundle(forClass: self.dynamicType)但现在看来.dynamicType已经弃用了,Xcode甚至不想编译它.
他的建议是使用,type(of: self)但也失败了.谁知道解决方案?谢谢.
dfr*_*fri 34
(下面适用于Swift 3;不是传统的Swift语言版本(2.3),但是它没有回答OP的问题,但对于Swift 3用户来说可能是有价值的,但仍然如此)
如你的问题所述,dynamicType现在(Swift 3)被弃用了type(of:).此外:
NSBundle已重命名为Bundle.init(forClass:)的初始化Bundle已重命名为init(for:).考虑到这些更改,对于Swift 3,您可以Bundle通过以下方式初始化(或获取与特定类关联的现有实例)对象:
class Foo {
func bar() -> () {
let bundle = Bundle(for: type(of: self))
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
@dfri 答案非常适合 Swift 3。
关于 Swift 2.3,我的解决方案是清理 Xcode (Command+Option+Shift+K) 并删除~/Library/Developer/Xcode/DerivedData. 问题不会立即消失,但一段时间后它将不再出现该错误。
也许这是一个错误,毕竟我们是8.0。我希望它能在下一个版本中得到修复。
谢谢大家。
| 归档时间: |
|
| 查看次数: |
14721 次 |
| 最近记录: |