2016-07-01 2 views
0

でスウィフト配列要素型と一致しなかった。また、プロジェクトのGitHubの内部バグとしてこの質問をした:https://github.com/evermeer/AlamofireJsonToObjects/issues/24AlamofireJson/EVReflectionは - NSArrayの要素が

フレームワークの使用:(REST用) Alamofire AlamofireJsonToObjects(にします (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)でブレークします。

ネストされたオブジェクトが配列に含まれていない場合、そのオブジェクトを逆シリアル化することができました。私は下にいくつかのコードを貼り付けて、私のプロセスを見ることができます。また、secondaryObjectsがからNULLのときMyPrimaryObjectが完全に解析されることに留意すべきである

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? 
} 

:私は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) 
     } 
    } 

モデルを印刷することを要求したとき

Alamofire要求は、エラーが発生しましたAPIレスポンス

私は明らかに単純化しましたが、私は実際にコードをあなたと個人的に共有しています。どんな助けでも大歓迎です!本当にありがとう!

答えて

1

私は https://github.com/evermeer/AlamofireJsonToObjects/issues/24

に報告したような問題は、あなたが、サブオブジェクトの配列を持っている場合パスカルケーシング変換が正しいタイプを取得するために機能しなかったということでした。このため辞書は配列に入れられていて、あなたが得たエラーを得るでしょう。

この修正はEVReflection 2.38.3で公開されています。

関連する問題