2016-05-25 17 views
2

にJSONレスポンスを追加することはできません私は、レルムに私のPOST応答を追加しようとしているが、私はこのエラーをスローしています:レルム

Cannot convert value of type 'String' to expected argument type 'Object'

は、これは私のコードです:

 Alamofire.request(.POST, Data.loginEndpoint, parameters: parameters) 
     .responseObject { (response: Response<Particulars, NSError>) in 

      print(response.request) 
      print(response.response) 
      print(response.result) 


      if let result = response.result.value 
      { 

       do{ 
        print(Realm.Configuration.defaultConfiguration.fileURL) 
        let realm = try Realm() 
        realm.add(result.name, update: true) 
       } 

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

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

UPDATE

このエラーが発生しました

fatal error: unexpectedly found nil while unwrapping an Optional value

user.name = result["name"]!.string

また、私は私のdo{} catch{}から!を削除したいが、SWIFTは私がそうすることはできません。どうすれば修正できますか?

私のコード:以下のスニペットは、レルムのドキュメントから直接引かれる

Alamofire.request(.POST, Data.loginEndpoint, parameters: parameters) 
     .responseObject { (response: Response<Particulars, NSError>) in 

      print(response.request) 
      print(response.response) 
      print(response.result) 



      if let result = response.result.value 
      { 

       do{ 
        let user = Particulars() 
        user.name = result["name"]!.string 
        user.apiToken = result["api_token"]!.string 
        let realm = try Realm() 
        realm.add(user, update: true) 
        print(Realm.Configuration.defaultConfiguration.fileURL) 
       } 

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

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

私はRealmに精通していませんが、Realmはその 'Object'タイプから継承するクラスオブジェクトを求めているようです。私は、あなたがレスポンスを取得してそのオブジェクトをレルムに保存するときに必要なすべてのプロパティ(名前、電子メールなど)を設定してクラスオブジェクトを作成する必要があると思います。 –

答えて

1

。レルムは、その 'オブジェクト'タイプから継承するクラスオブジェクトを必要としています。レスポンスを受け取ったときにそれらのプロパティを設定する必要があるすべてのプロパティ(名前、電子メールなど)を持つクラスオブジェクトを作成し、そのオブジェクトをRealmに保存する必要があります。

class Dog: Object { 
    dynamic var name = "" 
    dynamic var age = 0 
} 
class Person: Object { 
    dynamic var name = "" 
    dynamic var picture: NSData? = nil // optionals supported 
    let dogs = List<Dog>() 
} 

// Use them like regular Swift objects 
let myDog = Dog() 
myDog.name = "Rex" 
myDog.age = 1 
print("name of dog: \(myDog.name)") 

// Get the default Realm 
let realm = try! Realm() 

// Query Realm for all dogs less than 2 years old 
let puppies = realm.objects(Dog).filter("age < 2") 
puppies.count // => 0 because no dogs have been added to the Realm yet 

// Persist your data easily 
try! realm.write { 
    realm.add(myDog) 
} 
+0

こんにちは@リッチモンド私はこれを試しましたが、私はいくつかのエラー(更新された記事を参照してください)がスローされています。手伝ってくれませんか? – noobdev

+0

JSONの「名前」キーの値がないようです。私はオプショナルズを読んでみることをお勧めします。あなたは '!' 'result [" name "]'はオプションであるからです。つまり、それはゼロでもなくてもかまいません。あなたの場合はそれはゼロです。あなたが '!'あなたはその真の価値を示すように言っています。あなたの場合、値はnilですが、まだ '.string'を呼び出しています。 nilオブジェクトで '.string'を呼び出すので、例外がスローされています –

+0

しかし、印刷結果を出力すると出力が得られなくなりますので、 – noobdev