菜鸟教程小白 发表于 2022-12-13 16:43:42

ios - 无法将 JSON 响应添加到 Realm


                                            <p><p>我正在尝试将我的 POST 响应添加到 Realm ,但我抛出了这个错误:</p>

<blockquote>
<p>Cannot convert value of type &#39;String&#39; to expected argument type &#39;Object&#39;</p>
</blockquote>

<p>这是我的代码:</p>

<pre><code>   Alamofire.request(.POST, Data.loginEndpoint, parameters: parameters)
      .responseObject { (response: Response&lt;Particulars, NSError&gt;) 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(&#34;Error with realm: &#34; + err.localizedDescription)
                }

            }
            else
            {
                print(&#34;JSON data is nil. 123&#34;)
            }
    }
</code></pre>

<p><strong>更新</strong></p>

<p>我收到这个错误</p>

<blockquote>
<p>fatal error: unexpectedly found nil while unwrapping an Optional value</p>
</blockquote>

<p>在 <code>user.name = result["name"]!.string</code></p>

<p>另外,我想从我的 <code>do{} catch{}</code> 中删除 <code>!</code>,但 swift 不允许我这样做。我如何解决它? </p>

<p>我的代码:</p>

<pre><code>Alamofire.request(.POST, Data.loginEndpoint, parameters: parameters)
      .responseObject { (response: Response&lt;Particulars, NSError&gt;) in

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



            if let result = response.result.value
            {

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

                catch let err as NSError {
                  print(&#34;Error with realm: &#34; + err.localizedDescription)
                }

            }
            else
            {
                print(&#34;JSON data is nil. 123&#34;)
            }
    }
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>以下代码段直接来自 Realm 文档。 Realm 需要一个继承自其“对象”类型的类对象。您必须创建一个具有所有您需要的属性(姓名、电子邮件等)的类对象,当您收到响应时设置这些属性,然后将该对象保存到 Realm。 </p>

<pre><code>class Dog: Object {
dynamic var name = &#34;&#34;
dynamic var age = 0
}
class Person: Object {
dynamic var name = &#34;&#34;
dynamic var picture: NSData? = nil // optionals supported
let dogs = List&lt;Dog&gt;()
}

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

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

// Query Realm for all dogs less than 2 years old
let puppies = realm.objects(Dog).filter(&#34;age &lt; 2&#34;)
puppies.count // =&gt; 0 because no dogs have been added to the Realm yet

// Persist your data easily
try! realm.write {
   realm.add(myDog)
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无法将 JSON 响应添加到 Realm ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37427014/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37427014/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无法将 JSON 响应添加到 Realm