2015-04-01 65 views
0

我製作了一個使用Core Data和抓取結果控制器的應用程序。使用NSFetchedResultsController更新CoreData對象

我可以添加CoreData對象並刪除它們。現在我想通過抓取的結果控制器更新一個CoreData對象。我知道我必須獲取對象,然後才能更改它。但因爲我還在學習,所以我不知道該怎麼做。現在我想問你如何做到這一點?

回答

0

當您從CoreData中獲取數據時,如果修改了結果,它將在保存時更新CoreData中的實際值。

你要首先執行中的抓取:

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Entity" inManagedObejctContext:moc]]; 
NSError *error = nil; 
NSArray *results = [moc executeFetchRequest:request error:&error]; 

// error handling code 

一旦你有你的結果,你可以修改個人記錄...

MyEntity *entity = [results objectAtIndex:0]; 
entity.title = @"updated attribute"; 
// save context 
[moc save:&error]; 

編輯:在快捷,它會是沿着以下幾條線:

let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
var moc = appDelegate.managedObjectContext! 

var fetchRequest = NSFetchRequest() 
fetchRequest.entity = NSEntityDescription.entityForName("Entity", inManagedObjectContext: moc) 

var error: NSError? 
var results = moc.executeFetchRequest(fetchRequest, error: &error) 

// error handling code 

var entity: MyEntity = MyEntity() 
entity.title = "updated attribute" 

moc.save(&error) 
+0

感謝您的回答。我如何在Swift中執行此操作? – user3592462 2015-04-01 14:12:36

+0

我更新了包含swift代碼的答案。我對Swift沒有太多工作,但它應該與我發佈的內容非常相似。 – 2015-04-01 14:21:21

+0

moc是一個未解決的標識符 – user3592462 2015-04-01 15:03:03