簡體   English   中英

Xcode 錯誤:語義問題,在對象類型“GKEntity *”上找不到屬性“className”

[英]Xcode error: Semantic Issue, Property 'className' not found on object type 'GKEntity *'

最近我開始從 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。

我找不到任何解釋為什么該屬性已被刪除,但似乎確實如此!

確實找到了一個解決方案, 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))
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM