2011-08-15 155 views
1

我是核心數據的新手,我遇到了一些麻煩。我試圖存儲一個對象(最近的地址)。這裏是我的代碼:使用核心數據存儲對象

NSError *error; 
recentSearch = [[RecentSearch alloc] init]; 
[recentSearch setName:[searchTextField text]]; 
[recentSearch setDate:[NSDate date]]; 
NSManagedObjectContext *context = [recentSearch managedObjectContext]; 

if(![context save:&error]) 
{ 
    NSLog(@"Not saved. Error: %@",[error description]); 
} 
else 
{ 
    NSLog(@"Saved"); 
} 

我不認爲這是工作。這段代碼有什麼問題嗎? recentSearch是NSManagedObject。我的代碼打印Not saved. Error: (null)。任何幫助是極大的讚賞。

回答

1

你從哪裏獲得上下文?

您以非標準方式創建NSManagedObject。

通常情況下,您會要求CoreData使用NSEntityDescription來獲取NSManagedObject。其中self.moc是在應用程序初始化創建了NSManagedObject方面快捷

NSEntityDescription *entity = [NSEntityDescription entityForName:@"RecentSearch" inManagedObjectContext:self.moc]; 

: 您可以通過使用NSEntityDescription entityForName做到這一點:inManagedObjectContext。 當您在應用程序委託中啓動CoreData支持的項目時,會包含一段示例代碼。

基本上這會要求你的CoreData模型(NSManagedObjectModel)爲在那裏定義的實體。 以上內容用於查詢CoreData中的某些內容。

要插入一個新的對象插入到CoreData存儲你會使用

NSManagedObject *myManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"RecentSearch" inManagedObjectContext:self.moc]; 

現在存在在你的記憶新的託管對象的快捷方式。當你調用[self.moc保存:&錯誤]時,該對象可以填充數據並寫入底層永久存儲器;

希望這有助於一點點。