2012-03-30 47 views
-1

我的應用程序中有CoreData,並帶有一個Entry類,它包含一個Media類的NSOrderedSet。在這樣的變化之後,coredata會保存嗎?

然後我有這樣的代碼,用於添加新媒體項目的NSOrderedSet:

-(void)addImage:(UIImage *)image isInPhotoLibrary:(BOOL)isInPhotoLibrary { 

    Media *media = [[Media alloc] init]; 
    media.type = @"Image"; 
    media.originalImage = UIImageJPEGRepresentation(image, 1.0); 
    media.isInPhotoLibrary = [NSNumber numberWithBool:isInPhotoLibrary]; 

    [self addMediaObject:media]; 

} 

這是否會自動保存更改,或將我做我自己。如果是這樣,那麼我需要通過一個環境來做到這一點,或者有另一種方式嗎?

回答

1

(CoreDataGeneratedAccessors)沒有也不會。如果你想保存在覈心數據更改的數據庫,你得叫保存該功能..我承擔MediaNSManagedObject類的一種。要保存更改爲persistent store,您必須致電save方法。在此之前,您的scratch board/ ManagedObjectContext上的更改只是暫時性的。

這是我如何保存更改:

Worker *worker = (Worker *)[NSEntityDescription insertNewObjectForEntityForName:@"Worker" inManagedObjectContext:self.managedObjectContext]; 

worker.name=txtContact.text; 
worker.address=txtAddress.text; 
worker.zipCode=txtZip.text; 
worker.city=txtCity.text; 
worker.mobile=txtMobile.text; 

NSError *error; 

if (![managedObjectContext save:&error]) 
{ 
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
} 
2

不,這段代碼根本沒有任何核心數據引用。

媒體是NSManagedObject嗎?如果是這樣,你需要像這樣創建它:

Media *media = [NSEntityDescription insertNewObjectForEntityForName:@"Media" inManagedObjectContext:context]; 

這將把它放到你的託管對象上下文中。

如果您想要堅持它,則需要在託管對象上下文中調用save:。

Edit的....

在你的Entry類,你可能會認爲你使用對象添加到NSSet中生成的方法。這將是在一個類別上的輸入頭文件

- (void)addMediaObject:(Media *)value; 
+0

,通常你需要做反向指針(除非有沒有一個反比關係)。 – DRVic 2012-03-30 13:32:12

相關問題