2015-10-09 70 views
2

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

現在我想要實現的演示填寫的境界在我的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個任務以名字「現金&卡」,「衣服」和「護照」和假taskStatus'es。 當我添加「讓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

在此先感謝!

回答

1

它與屬性的類型不匹配。

Task的數組對象作爲["Cash & Cards", false]傳遞給數組對象。該數組包含StringBool的值。否則,您的模型定義Task只有String屬性。所以後面的值不匹配,通過boolean值,但模型預計String值。

所以解決方法是:讓您的模型包含StringBool屬性。像下面一樣

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

謝謝你,現在我明白了,我的問題真的很愚蠢:D –

+0

但是它仍然失敗了'let realm = try! Realm()'還有'Thread 1:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode 0x0)' –

+0

嗯,這很奇怪。請確定發生了什麼錯誤?將你的代碼重寫爲'do {let realm = try Realm()} catch let error {print(error)}'來查看錯誤。 –