最近我开始从Xcode收到此错误:
此'className'属性属于NSObject。 Here is the official documentation.
为什么会发生这种情况?如何解决?(不要避免使用此属性)?
奇怪的是,几天前完全相同的代码在macOS和iOS目标上运行得很好。然后它在构建成功完成后开始显示此错误(我可以正常运行项目),但现在iOS目标甚至无法构建......
我尝试过(1)多次清除我的derivedData文件夹,(4)执行干净的检查,(3)重新启动Xcode,(2)重新启动系统,所有这些都按正确的顺序,但没有成功... < / p>
我在 macOS 10.12.3 上使用 Xcode Version 8.2.1 ,我的部署目标是iOS为10.2,macOS为10.12。
答案 0 :(得分:1)
我找不到为什么此属性已被删除的任何解释,但它似乎确实如此!
我确实找到了解决方案,Get class name of object as string in Swift
const prop_info *pi;
pi = __system_property_find("ro.serialno");
if (pi == 0) {
// We've got a problem
}
答案 1 :(得分:1)
正如@JamesP在上面的评论中指出的那样,className属性清楚地记录在macOS 10.0+上,而不是在iOS上,我没注意到......
这意味着我的问题来自于我在开发过程中将实现的目标设置从macOS更改为macOS和iOS。
因为我正在使用Objective-C,所以我最终用
替换了entity.className
NSStringFromClass([entity class])
@Russel的答案显示了如何在Swift中解决这个问题。
答案 2 :(得分:0)
一个整洁的小扩展应该可以解决问题。
public extension NSObject {
var nameOfClass: String {
String(describing: type(of: self))
}
}