2016-05-23 14 views
2

私はレルムに私のJSONオブジェクトを追加しようとしていますが、私はこのエラーをスローされ続けるとレルムにJSON辞書を追加する方法をAlamofireObjectMapper

型の値をキャストすることができませんでした「__NSCFDictionary」(0x10c52f178)に " NSArray '(0x10c52eb88)。

ラインfor user in result as! [AnyObject] {。これは私のJSONレスポンスです:

{ 
    "name" : "Jonny Walker", 
    "api_token" : "qwertyuiop1234567890", 
    "profile_picture" : "http:default_profile_picture.jpg", 
    "id" : 10, 
    "email" : "[email protected]" 
    "username" : "jonny" 
} 

これは私のコードです:

import Foundation 
import Alamofire 
import SwiftyJSON 
import RealmSwift 
import ObjectMapper 
import AlamofireObjectMapper 


class Login { 

init(userName: String, passWord: String) { 
    Data.sharedInstance.userName = userName 
    Data.sharedInstance.passWord = passWord 
} 

// call this method to login 
func getRequest() { 

let parameters = [ 
     "username" : Data.sharedInstance.userName!, 
     "password" : Data.sharedInstance.passWord!, 
    ] 

Alamofire.request(.POST, Data.todoEndpoint, parameters: parameters) 
     .responseJSON { response in 


if let result = response.result.value 
{ 
    let value = JSON(result) 
    do{   
    print(Realm.Configuration.defaultConfiguration.fileURL!) 
    let realm = try! Realm() 
    for user in result as! [AnyObject] { 
     try realm.write{ 
      realm.add(user as! Object, update: true) 
     } 
    } 

    } 

    catch let err as NSError { 
     print("Error with realm: " + err.localizedDescription) 
    } 

} 
else 
{ 
    print("JSON data is nil.") 
} 

} 

} 

} 

答えて

2

あなただけユーザーの代わりに、多くを受けるようです。この場合、配列へのレスポンスを解析して、それが1つのユーザオブジェクトにマップしようとすると失敗する場合は...

"as!"を使用しないでください。使用?"代わりにnilをテストしてください。

例:

let dict = response as? Dictionary<String, AnyObject> 

if dict != nil { 
    // Parse a single User 
} else { 
    let arr = response as? [AnyObject] 
} 
+0

はどのようにして、単一のユーザーオブジェクトにマッピングしていますか? – noobdev

+0

私は知らない。私は 'let user = User()'で新しいUserを作成し、辞書からプロパティを設定できると思います。例:user.name = dict ["name"] as?文字列 – switchCTRL

関連する問題