用Mantle-Swift解析JSON
我正在使用mantle用Swift解析JSON数据。JSON文件的内容包括:用Mantle-Swift解析JSON,json,swift,metal,Json,Swift,Metal,我正在使用mantle用Swift解析JSON数据。JSON文件的内容包括: { "Name1": [ { "Type": "New", "Available": true, "Kind": "4178228729", "Loot": "4367", "Advanced": [ { "Type": "Old", "Name": "
{
"Name1": [
{
"Type": "New",
"Available": true,
"Kind": "4178228729",
"Loot": "4367",
"Advanced": [
{
"Type": "Old",
"Name": "RoundRobin",
"Available": true,
"Specs": [
{
"Type": "Fire",
"Available": true,
"Actions": [
--continues with similar pattern--
],
"Name2": [
--repeats the same pattern at before--
]
}
我创建了模型类,继承了MTLJSONSerialization。“第一级类”包含两个顶级对象数组
import Foundation
class lv1Class: MTLJSONSerializing {
let name1: Array<lv2Class> = []
let name2: Array<lv2Class> = []
class func name2JSONTransformer() -> NSValueTransformer {
return NSValueTransformer.mtl_JSONArrayTransformerWithModelClass(lv2Class.self)
}
class func name1JSONTransformer() -> NSValueTransformer {
return NSValueTransformer.mtl_JSONArrayTransformerWithModelClass(lv2Class.self)
}
override class func JSONKeyPathsByPropertyKey() -> [NSObject : AnyObject]!
{
return ["name1": "Name1",
"name2": "Name2"]
}
}
testDic是上面发布的文件
我为获取json数据所做的调用成功了,我非常确信问题出在我的数据模型中。字典的值是一个数组,所以我很有信心将它解析为一个数组
我得到的错误是:
Assertion failure in -[MTLJSONAdapter initWithJSONDictionary:modelClass:error:], /Users/xx/Documents/Xcode/My_project/Pods/Mantle/Mantle/MTLJSONAdapter.m:149
2015-03-14 14:34:20.331 My_project[25794:711328] *** Caught exception available is not a property of My_project.lv2Class
但可用的是这样一类属性
let available: Bool = true
希望它足够清楚,如果你有任何问题,请随时提问
我真的不熟悉JSON解析,谢谢大家的帮助。答案是
您都需要将它们设置为
dynamic
,并确保您的所有属性都可以桥接到等效的Obj-C属性。您好,我面临这个问题。我有“dynamic var allowPushNotifications:NSNumber=0”,在结果模型中我得到一个null。如果我把它改成字符串,我就得到了期望值。使用Mantle 2和Swift 1.2。谢谢
Assertion failure in -[MTLJSONAdapter initWithJSONDictionary:modelClass:error:], /Users/xx/Documents/Xcode/My_project/Pods/Mantle/Mantle/MTLJSONAdapter.m:149
2015-03-14 14:34:20.331 My_project[25794:711328] *** Caught exception available is not a property of My_project.lv2Class
let available: Bool = true