还作为项目的GitHub:https://github.com/evermeer/AlamofireJsonToObjects/issues/24中的一个bug问了这个问题。
使用框架: Alamofire (用于REST) AlamofireJsonToObjects (用于反序列化JSON) (它依赖于EVReflection)
当试图在对象中获取对象数组以反序列化时,我遇到了问题。输出是fatal error: NSArray element failed to match the Swift Array Element type
,然后调试器在EVReflection.swift mi = Mirror(reflecting: theValue)
的第560行中断,错误为:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0)
。
当嵌套对象不在数组中时,它能够反序列化嵌套对象,因此不确定问题可能是什么。不过,我会在下面粘贴一些代码,这样您就可以看到我的流程。
Alamofire请求,当我要求它打印debugDescription时,会发生错误
Alamofire.request(.GET, "http://server.com/api/get/all", headers: getAuthenticationHeaders()).
validate().
responseArray { (response: Result<[MyPrimaryObject], NSError>) in
if(response.isSuccess){
print(response.debugDescription)
success(response.value)
}
if(response.isFailure){
let error : NSError = response.error!
NSLog("API failure: \(error.debugDescription)")
failure(error)
}
}
型号:
public class MyPrimaryObject : EVObject{
public var myPrimaryObjectId : NSUUID?
public var name : String = ""
public var myObjectDescription: String?
public var numberOfOccurrences : Int = 0
public var positiveResponsePercentage : Float = 0
public var secondaryObjects : [MySecondaryObject]?
override public func propertyMapping() -> [(String?, String?)] {
return [("myObjectDescription","Description")]
}
}
public class MySecondaryObject : EVObject {
public var mySecondaryObjectId : Int = 0
public var dateRecorded : NSDate?
public var rating : Int = 0
public var userRemarks : String?
}
还应该注意的是,当MyPrimaryObject
响应中的secondaryObjects
为null时,secondaryObjects
被解析得非常完美。
显然,我已经简化了,我很高兴与您私下分享实际的代码。任何帮助都将不胜感激!非常感谢!
发布于 2016-08-26 03:38:05
正如我在https://github.com/evermeer/AlamofireJsonToObjects/issues/24中所报道的
问题是,当您有一个子对象数组时,pascal大小写转换无法获得正确的类型。正因为如此,字典被放入数组中,您将得到所得到的错误。
修复程序已在EVReflection 2.38.3中发布
https://stackoverflow.com/questions/38138326
复制相似问题