领域:请展示如何正确创建对象

Realm: please show how to properly create objects

我有 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)
    }
}
}

此代码应按设计创建名称为 "Things for vacation" 的列表,其中包含名称为 "Cash & Cards"、"Clothes" 和 "Passport" 的 3 个任务以及错误的任务状态。 当我添加 "let list_0 = (...)" 行和 运行 时,应用程序崩溃并出现 "Thread 1: signal 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)

提前致谢!

它与 属性 的类型不匹配。

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

所以解决方案是:使您的模型包含 StringBool 属性。喜欢下面

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