2011-08-15 66 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保存:&错误]时,该对象可以填充数据并写入底层永久存储器;

希望这有助于一点点。