0
我有三個表。表運行,引腳和註釋。它們之間的關係是:MagicalRecord保存數組與關係
1運行ň針
1針N注
我想更新運行,插入一個引腳(指向運行),並插入N筆記(指向Pin)。而且,當用戶轉到另一個屏幕時,我會看到插入的引腳的註釋。但是,我的問題是隻返回一個音符。所以,我不知道錯誤是在Update/Insert方法還是在find方法上。我嘗試了很多不同的方式來做到這一點,但他們中的任何一個都解決了我的問題。
插入/更新:
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
// Get current Run
Run *runDb = (Run*) [localContext objectWithID:self.idRun];
//Create a pin
Pin *newPin = [Pin MR_createInContext:localContext];
[newPin setSt_description:self.txtName.text];
[newPin setRun: runDb];
/* Set latitude & longitude */
newPin.dec_latitude = (NSDecimalNumber *)[NSDecimalNumber numberWithDouble:currentLocation.coordinate.latitude];
newPin.dec_longitude = (NSDecimalNumber *)[NSDecimalNumber numberWithDouble:currentLocation.coordinate.longitude];
/* Update run, incrementing total pins*/
int pins = [runDb.int_total_pin intValue];
NSNumber *pinsN = [NSNumber numberWithInt:pins+1];
[runDb setInt_total_pin:pinsN];
for (int i=0; i<[notes count]; i++) {
Note *note = [Note MR_createInContext:localContext];
[note setSt_note:[[notes objectAtIndex:i] st_note]];
[note setPin:newPin];
}
} completion:^(BOOL success, NSError *error) {
if(!success)
NSLog(@"%@", error);
}];
查找方法(GET針的所有音符)
-(NSArray*) getNotesFromPin:(NSManagedObjectID*) pinId{
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"pin == %@", pinId];
//Return notes from pin
return [Note MR_findAllWithPredicate:predicate1];
}
在日誌中,我可以看到MagicalRecord被插入5個對象( 3筆記,1筆和1筆):
NSManagedObjectContext(MagicalRecord) MR_contextWillSave:](0xba9ba70) Context BACKGROUND SAVING (ROOT) is about to save. Obtaining permanent IDs for new 5 inserted objects
2013-11-24 19:24:28.103 MyProject[35447:1ea1b] __70-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:]_block_invoke_021(0xba9ba70) → Finished saving: <NSManagedObjectContext (0xba9ba70): *** BACKGROUND SAVING (ROOT) ***> on *** BACKGROUND THREAD ***
Pin.note是1-1,我改變了1-N。注意事項是1-1(是正確的)。但是,注意必須指向Pin,不是嗎?我必須實施addNote方法?因爲我試圖這樣做時出現錯誤:由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:' - [Note intersectsSet:]:使用[note setPin:newPin]發送到實例0x9da5f80' –
'的無法識別的選擇器和您的提示改變關係作品!謝謝!! –