1

创建地幔模型时,我一直试图忽略字典中的键。假设 json 包含:

{
    prop1:"my prop",
    prop2:"my prop2"
}

最初我有一个模型

class MyModel: MTLModel, MTLJSONSerializing {


    //MARK: Model properties

    var prop1: String!

    class func JSONKeyPathsByPropertyKey() -> [NSObject : AnyObject]! {

        return ["prop1":"prop1"]
    }
}

问题是我收到一条错误消息,说“此类不符合键 prop2 的键值编码”。

我还注意到,JSONKeyPathsByPropertyKey使用字典初始化模型时不会调用该方法try! super.init(dictionary: dictionaryValue, error: ()),仅在从模型生成 JSON 时才会调用该方法,强制属性具有与 JSON 相同的键。我希望能够忽略某些键的原因是因为后端服务可能会发生变化,而且我不一定必须滚动更新,因为调用中添加了一些额外的信息,或者因为它们完全不相关。

4

1 回答 1

2

原来我没有MTLJSONAdapter使用init(dictionary: dictionaryValue, error: ()). 正确的方法是使用MTLJSONAdapter.modelOfClass(MyClass.self, fromJSONDictionary: aDictionary, error: ());这种JSONKeyPathsByPropertyKey方法,实际上使用的方法。

于 2015-10-06T03:30:33.717 回答