【问题标题】:Realm: please show how to properly create objects领域:请展示如何正确创建对象
【发布时间】:2015-10-09 15:45:03
【问题描述】:

我有两个类的 RealmData.swift:

import UIKit
import RealmSwift

class Task : Object {
    dynamic var taskName = ""
    dynamic var taskStatus = ""
}

class TaskList : Object {
    dynamic var listName = ""
    let tasks = List<Task>()
}

现在我正在尝试为 Realm 实现演示填充,以便稍后在我的 UITableViewController 中显示它:

import UIKit
import RealmSwift

class ListsTableViewController: UITableViewController, ListCellDelegate, UITextFieldDelegate {
// (...)
override func viewDidLoad() {
    // (...)
    let list_0 = TaskList(value: ["Things for vaction", [["Cash & Cards", false], ["Clothes", false], ["Passport", false] ] ])
    let realm = try! Realm()
    realm.write {
        realm.add(list_0)
    }
}
}

此代码应按设计创建一个名称为“度假的事情”的列表,其中包含 3 个名称为“现金和卡片”、“衣服”和“护照”的任务以及错误的任务状态。 当我添加“let list_0 = (...)”行并运行时,应用程序在“线程 1:信号 SIGABRT”异常开始时崩溃。我是拼错了什么还是需要先创建 Task 对象?但是https://realm.io/docs/swift/latest/也有同样的例子:

let aPerson = Person(value: ["Jane", 30, [["Buster", 5], ["Buddy", 6]]])

请解释一下,这有什么问题? 我对当前限制很好 (https://realm.io/docs/swift/latest/#current-limitations)

提前致谢!

【问题讨论】:

    标签: ios swift swift2 realm


    【解决方案1】:

    它与属性的类型不匹配。

    您将Task 的数组对象作为["Cash &amp; Cards", false] 传递。该数组包含StringBool 值。否则,Task 的模型定义只有 String 属性。所以后一个值不匹配,传递 boolean 值但模型需要 String 值。

    所以解决方案是:让你的模型包含StringBool 属性。如下所示

    class Task : Object {
        dynamic var taskName = ""
        dynamic var taskStatus = false
    }
    

    【讨论】:

    • 谢谢你,现在我明白了,我的问题真的很愚蠢:D
    • 但它仍然在let realm = try! Realm() 上失败了Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode 0x0)
    • 嗯,这很奇怪。请确定发生了什么错误?将您的代码重写为do { let realm = try Realm() } catch let error { print(error) } 以查看错误。
    • do { let realm = try Realm() ; realm.write { realm.add(list_0) } } catch let error { print(error) } 运行时完全没有错误。是的,这真的很奇怪。仔细检查:let realm = try! Realm() 失败,您建议的 do{} catch{} 运行顺利。
    • 真的很奇怪。数据是否实际写入磁盘?如果您的代码更改为let realm = try? Realm()print(realm),它会在控制台中显示什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多