簡體   English   中英

setValueForKeys失敗了Swift

[英]setValueForKeys is failing Swift

我在Playground中有以下代碼:

class Pokemon : NSObject {

    var name :String!
    var id :Int?
    var imageURL :String!
    var latitude :Double!
    var longitude :Double!

    init(dictionary :[String:Any]) {

        super.init()
        setValuesForKeys(dictionary)
}
}

let dict :[String:Any] = ["name":"John","imageURL":"someimageURL","latitude":45.67]
let pokemon = Pokemon(dictionary: dict)

當調用setValuesForKeys時,它會拋出一個異常,說明以下內容:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__lldb_expr_13.Pokemon 0x6000000ffd00> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key latitude.'

我有關鍵的“緯度”但由於某種原因它無法找到它。 有任何想法嗎!

Double!Double! (類似Double? )在Objective-C世界中沒有對應關系,因此它不會作為Objective-C屬性公開 ,因此Key-Value Coding無法找到名為“latitude”和崩潰的鍵。

如果需要KVC,您應該將這些字段轉換為非可選字段。

class Pokemon : NSObject {
    var name: String!
    var id: Int = 0
    var imageURL: String!
    var latitude: Double = 0.0
    var longitude: Double = 0.0

    init(dictionary: [String: Any]) {
        super.init()
        setValuesForKeys(dictionary)
    }
}

暫無
暫無

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

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