我不清楚您是否需要保存實體名稱或特定的託管對象,但在這兩種情況下解決方案都是相同的:您需要將參考存儲在NSUserDefaults中。
要將實體存儲在用戶默認值中,您只需將實體名稱保存爲字符串。因此,像:
[[NSUserDefaults standardUserDefaults] setValue:entityNameString forKey:@"currentlySelectedEntity"];
...並找回它:如果您需要保存到特定管理對象的引用
NSString *currentEntity=[[[NSUserDefaults standardUserDefaults] valueForKey:@"currentlySelectedEntity"];
,您需要保存的管理對象ID 已保存對象。節省是非常重要的。在保存創建對象的上下文之前,對象ID只有一個臨時值,保存後會更改。如果使用臨時值,則對象的任何引用都將丟失。
保存對象ID:
NSManagedObject *mo=[NSEntityDescription insertNewObjectForEntityForName:@"TestEntity" inManagedObjectContext:self.managedObjectContext];
//... save the context
NSManagedObjectID *moID=[mo objectID];
NSURL *moIDURI=[moID URIRepresentation];
[[NSUserDefaults standardUserDefaults] setValue:moIDURI forKey:@"currentlySelectedTestObject"];
...以檢索它:
NSURL *uri=[[NSUserDefaults standardUserDefaults] valueForKey:@"currentlySelectedTestObject"];
NSManagedObjectID *moID=[self.persistentStoreCoordinator managedObjectIDForURIRepresentation:uri];
NSManagedObject *mo=[self.managedObjectContext objectRegisteredForID:moID];
(上面的代碼是未編譯並且可能包含拼寫錯誤,所以不要只是複製和粘貼)
我不清楚你在問什麼。您是否在問如何將某些內容保存到核心數據中?你問你是否應該使用核心數據而不是用戶默認?你問如何將一個特定的託管對象傳遞給另一個視圖控制器? – TechZen 2011-04-19 13:37:48
哦,我很抱歉造成一些混亂。 我不想保存某些內容到核心數據。我有3個ViewControllers: ViewController#1:顯示來自核心數據的數據 ViewController#2:顯示來自核心數據的數據 ViewController#3:有一個UIPickerView讓我們的用戶選擇一個實體其核心數據的屬性。 – 2011-04-21 15:04:38
我想要的是以下內容:當用戶從ViewController#3中選擇一個實體時,應該持久地存儲這些信息,以便ViewController#1和#2始終知道(即使用戶退出應用程序 - 無背景!),他們應該獲得哪些實體的數據。 我明確了嗎? – 2011-04-21 15:09:10