Xcode error: Semantic Issue, Property 'className' not found on object type 'GKEntity *'
Xcode error: Semantic Issue, Property 'className' not found on object type 'GKEntity *'
最近我开始从 Xcode 收到此错误:
Error Screenshot
这个'className'属性属于NSObject。 Here is the official documentation.
为什么会这样,我该如何解决(不避免使用这个属性)?
奇怪的是,完全相同的代码几天前在 macOS 和 iOS 目标上运行良好。然后它在构建成功完成后开始显示此错误(我可以 运行 项目就好了),但现在 iOS 目标甚至不会构建...
我尝试 (1) 多次清除我的 derivedData 文件夹,(4) 进行干净的检查,(3) 重新启动 Xcode,以及 (2) 重新启动系统,所有这些都以正确的顺序进行,但没有成功...
我在 macOS 10.12.3 上使用 Xcode 版本 8.2.1,我的部署目标是 10.2 iOS 和 10.12 for macOS。
我找不到关于为什么这个属性被删除的任何解释,但它看起来确实是!
我确实找到了解决方案,Get class name of object as string in Swift
String(describing: type(of: self))
正如@JamesP 在上面的评论中指出的那样,className 属性 明确记录为仅存在于 macOS 10.0+ 上,而不存在于 iOS 上,我没有注意到这一点......
这意味着我的问题是因为我在开发过程中将我的实现的目标设置从仅 macOS 更改为 macOS 和 iOS。
因为我使用的是 Objective-C 我最终将 entity.className
替换为
NSStringFromClass([entity class])
@Russel 的回答显示了如何在 Swift 中解决这个问题。
一个简洁的小扩展应该可以解决问题。
public extension NSObject {
var nameOfClass: String {
String(describing: type(of: self))
}
}
最近我开始从 Xcode 收到此错误:
Error Screenshot
这个'className'属性属于NSObject。 Here is the official documentation.
为什么会这样,我该如何解决(不避免使用这个属性)?
奇怪的是,完全相同的代码几天前在 macOS 和 iOS 目标上运行良好。然后它在构建成功完成后开始显示此错误(我可以 运行 项目就好了),但现在 iOS 目标甚至不会构建...
我尝试 (1) 多次清除我的 derivedData 文件夹,(4) 进行干净的检查,(3) 重新启动 Xcode,以及 (2) 重新启动系统,所有这些都以正确的顺序进行,但没有成功...
我在 macOS 10.12.3 上使用 Xcode 版本 8.2.1,我的部署目标是 10.2 iOS 和 10.12 for macOS。
我找不到关于为什么这个属性被删除的任何解释,但它看起来确实是!
我确实找到了解决方案,Get class name of object as string in Swift
String(describing: type(of: self))
正如@JamesP 在上面的评论中指出的那样,className 属性 明确记录为仅存在于 macOS 10.0+ 上,而不存在于 iOS 上,我没有注意到这一点......
这意味着我的问题是因为我在开发过程中将我的实现的目标设置从仅 macOS 更改为 macOS 和 iOS。
因为我使用的是 Objective-C 我最终将 entity.className
替换为
NSStringFromClass([entity class])
@Russel 的回答显示了如何在 Swift 中解决这个问题。
一个简洁的小扩展应该可以解决问题。
public extension NSObject {
var nameOfClass: String {
String(describing: type(of: self))
}
}