0

最近我开始从 Xcode 收到这个错误:

错误截图

这个 'className' 属性属于 NSObject。这是官方文档。

为什么会发生这种情况,我该如何解决(不避免使用此属性)


奇怪的是,几天前完全相同的代码在 macOS 和 iOS 目标上都运行良好。然后它在构建成功完成后开始显示此错误(我可以很好地运行该项目),但现在 iOS 目标甚至不会构建......

我尝试(1)多次清除我的derivedData文件夹,(4)进行干净的结帐,(3)重新启动Xcode,(2)重新启动系统,所有这些都以正确的顺序进行,但没有成功......

我在macOS 10.12.3上使用Xcode 版本 8.2.1,我的部署目标是 iOS 10.2 和 macOS 10.12。

4

3 回答 3

2

正如@JamesP 在上面的评论中指出的那样,className 属性被明确记录为仅存在于 macOS 10.0+ 上,而不存在于 iOS 上,我没有注意到...

这意味着我的问题来自于我在开发过程中将实现的目标设置从仅 macOS 更改为 macOS 和 iOS。

因为我使用的是 Objective-C,所以我最终替换entity.className

NSStringFromClass([entity class])

@Russel 的答案展示了如何在 Swift 中解决这个问题。

于 2017-03-01T15:33:28.050 回答
2

我找不到任何解释为什么该属性已被删除,但似乎确实如此!

确实找到了一个解决方案,Get class name of object as string in Swift

String(describing: type(of: self))
于 2017-03-01T13:37:42.967 回答
0

一个整洁的小扩展应该可以解决问题。

public extension NSObject {

    var nameOfClass: String {
        String(describing: type(of: self))
    }
}
于 2021-03-17T18:04:35.103 回答