2017-02-21 58 views
3

我是新來的領域,有這個問題。如何使用字典將字符串數組存儲到Realm實例中?

我有一個Dictionary這樣

{ 
    firstName : "Mohshin" 
    lastName : "Shah" 
    nickNames : ["John","2","3","4"]    
} 

class這樣

class User: Object { 
    var firstName: String? 
    var lastName: String? 
    var nickNames: [String]? 
} 

當我試圖插入它拋出一個異常,如下

物業的價值觀nickNames'被聲明爲'NSArray',它不是支持的RLMObject屬性類型。所有屬性必須是基元,NSString,NSDate,NSData,NSNumber,RLMArray,RLMLinkingObjectsRLMObject的子類。
有關更多信息,請參閱https://realm.io/docs/objc/latest/api/Classes/RLMObject.html
我也曾嘗試

var nickNames = NSArray() 

var nickNames = NSMutableArray() 

但不是working.Do我需要做的暱稱模型類,並創建一個屬性如下或有辦法做到這一點?

var nickNames = List<Nickname>() 
+0

領域現在直接支持基元類型列表。請參閱[此答案](https://stackoverflow.com/a/48339013/1315347)。 – bmunk

回答

0

境界不支持是NSArray s和目前不支持是List原始宗教的類型(如List小號串)的屬性模特屬性。現在,您應該創建一個包裝暱稱字符串的Nickname模型,然後存儲List<Nickname>,如上面的示例代碼。

This ticket在我們的GitHub存儲庫中跟蹤對原語列表的支持,儘管2014年沒有任何評論特別重要。如果您想了解該功能何時可用,您可以關注該門票。

(另請注意,您應該聲明您的列表財產let,不var。)

+0

爲此類暱稱創建模型 ''' class暱稱:對象{ dynamic var value:String! }''' 和取得的暱稱屬性作爲 '讓暱稱=列表()' 據崩潰 ''' 值無效 '約翰' 初始化類型的 '暱稱' 對象:缺少關鍵'值'' ''' –

+0

'John'不在您發表評論中發佈的任何代碼片段中。你能用你正在使用的實際代碼更新你的問題嗎? – AustinZ

+0

約翰是暱稱的價值..我剛剛重新命名的變數,沒有別的..你可以擁有'1'。仍然更新問題 –

0

使用列表是相當多的做到這一點的唯一途徑。在初始化Nickname對象(您在List中創建的領域對象)時,應該爲值param提供一個數組,即使該值實際上只是一個字符串。例如:

let aNickName = Nickname(value:["John"]) 

這就是爲什麼它被扔一個錯誤說「無效值‘約翰’初始化類型‘暱稱’的對象」。

0

UPDATE:

您現在可以存儲原始類型或它們可爲空的對應物:直接在RLMArrays或解釋(更具體地布爾,整數和浮點數的類型,字符串,日期和數據)。如果你想定義一個這樣的原始值列表,你不再需要定義繁瑣的單字段包裝器對象。相反,你可以直接存儲原始值。原始值的

列出的工作幾乎相同的方式爲包含對象的列表,如下面的例子演示了斯威夫特:

class Student : Object { 
    @objc dynamic var name: String = "" 
    let testScores = List<Int>() 
} 

// Retrieve a student. 
let realm = try! Realm() 
let bob = realm.objects(Student.self).filter("name = 'Bob'").first! 

// Give him a few test scores, and then print his average score. 
try! realm.write { 
    bob.testScores.removeAll() 
    bob.testScores.append(94) 
    bob.testScores.append(89) 
    bob.testScores.append(96) 
} 
print("\(bob.testScores.average()!)") // 93.0 

的領域支持的所有其他語言也支持原始類型的列表。

相關問題