2014-07-24 47 views
0

用其他RLMObjects數組實例化RLMObject的正確方法是什麼?Realm.io數組創建

的文檔不提任何東西,我最初的嘗試(什麼都不做,假設領域做正確的事,並創建一個空數組並指派,當我設置似乎我的第一次關係了不上班。

這裏是我的代碼:

[[RLMRealm defaultRealm] beginWriteTransaction]; 
[_realmAnswers removeAllObjects]; 
NSMutableArray* newArray = [NSMutableArray arrayWithCapacity:answers.count]; 

for (NSString* answerString in answers){ 
    OFEAnswerEntry* newAnswer = [[OFEAnswerEntry alloc] init]; 
    newAnswer.answerString = answerString; 
    [newArray addObject:newAnswer]; 
} 

[_realmAnswers addObjectsFromArray: newArray]; 
[[RLMRealm defaultRealm] commitWriteTransaction]; 

回答

3

使用addObjectsFromArray:方法上RLMArray

ArrayPropertyObject *obj = [ArrayPropertyObject createInRealm:realm withObject:@[@"arrayObject", @[], @[]]]; 
StringObject *child1 = [StringObject createInRealm:realm withObject:@[@"a"]]; 
StringObject *child2 = [[StringObject alloc] init]; 
child2.stringCol = @"b"; 
[obj.array addObjectsFromArray:@[child2, child1]]; 

此代碼是直接取自一unit test in realm-cocoa。

你也可以做到這一點在更少的代碼:

NSArray *stringObjects = @[ 
    [[StringObject alloc] initWithObject:@[@"a"]], 
    [[StringObject alloc] initWithObject:@[@"b"]] 
]; 
[ArrayPropertyObject createInRealm:realm withObject:@[@"arrayObject", stringObjects, @[]]]; 
+0

+1指向我的測試,因爲它讓我的解決方案:-) –

1

所以jpsim的答案是添加對象的正確方法,但在我的代碼的問題(因爲他的答案補充)是RLMArray屬性創建從第一個引用的訪問者懶惰地使用下劃線ivar符號(_realmAnswers)可以避免該負載。

從改變我的代碼:

[_realmAnswers addObjectsFromArray: newArray]; 

[self.realmAnswers addObjectsFromArray: newArray]; 

解決了這個問題。