Iphone 从用户输入向持久存储添加对象

Iphone 从用户输入向持久存储添加对象,iphone,core-data,Iphone,Core Data,好吧,让我先说我是新来的!哈哈,我已经尽了我应有的努力研究了这些主题(到目前为止有4本书和许多视频),并连续搜索了几个小时,但仍然没有找到答案 我觉得我对核心数据有着坚实的理解,或者至少对其后端数据库有着深刻的理解。我有我的应用程序,我有我的模型建成。我的应用程序有一个选项卡栏控制器,以及每个单独选项卡的导航控制器 我的应用程序将有一个项目表视图,该视图将从核心数据填充这些项目的名称。选择项目后,navController将弹出一个详细视图,该视图将加载该项目的其余数据 当用户单击+以添加项目时

好吧,让我先说我是新来的!哈哈,我已经尽了我应有的努力研究了这些主题(到目前为止有4本书和许多视频),并连续搜索了几个小时,但仍然没有找到答案

我觉得我对核心数据有着坚实的理解,或者至少对其后端数据库有着深刻的理解。我有我的应用程序,我有我的模型建成。我的应用程序有一个选项卡栏控制器,以及每个单独选项卡的导航控制器

我的应用程序将有一个项目表视图,该视图将从核心数据填充这些项目的名称。选择项目后,navController将弹出一个详细视图,该视图将加载该项目的其余数据

当用户单击+以添加项目时,我需要弹出到另一个视图控制器,其中包含字段以添加名称和详细信息(它会这样做)。然而,我似乎无法保存这些细节。我认为我需要将用户输入转换为NSSet,然后将该NSSet放入持久性存储,但我无法找到用于此的方法声明!目前,我的代码看起来像这样

- (IBAction) save:(id)sender {
 NSLog(@"Save pressed");

 if (itemName != nil) {

  [itemName removeObject:itemName];
  self.item = nil;  //This will release our reference also
 }
 //Create a new item set for the new values
 NSSet* newItem = [[NSSet alloc] initWithSet:newItem];

 [self didChangeValueForKey:@"itemName"];
 [self didChangeValueForKey:@"detailItem1"];
 [self didChangeValueForKey:@"detailItem2"];

 //Add it to the master item array and release our reference
 [itemArray addObject:newItem];
 [newItem release];

 //Sort the array since the name might have changed with an existing item or a new one
 NSSortDescriptor *nameSorter = [[NSSortDescriptor alloc] initWithKey:@"itemName" ascending:YES selector:nil];

 [itemArray sortUsingDescriptors:[NSArray arrayWithObject:nameSorter]];
 NSLog(@"Array sorter");
 [nameSorter release];

 //then pop the detailed view controller

 [self dismissModalViewControllerAnimated:YES];
}
我在核心数据上找到的所有文档都指向填充现有数据库的方向,而不是接受用户输入。因此,如果我的方法有点偏离,而答案不仅仅是一个简单的答案,请给我指出正确的方向

此外,我还在我的核心数据存储中添加了成功持久化的项目。然而,我的应用程序中还没有创建sqlite数据库,我认为这是自动创建的。所以我可能有比我想象的更多的问题

到目前为止,我已经发现这个网站是一个巨大的帮助,即使我的声誉不允许我评价答案


无论如何,先谢谢你的帮助

在大多数核心数据实现中,除非同时向关系中添加多个托管对象,否则不会直接处理集合。我真的不知道你在这里想做什么

在显示的代码中,您不做任何与核心数据相关的事情。您没有上下文,也没有向上下文中插入可以用新数据填充的新托管对象。事实上,您似乎根本没有任何托管对象


我建议您查看Xcode中基于导航的项目模板。它显示了如何设置核心数据堆栈以及如何添加和删除在tableview中显示的对象

TechZen通常最简单的答案是正确的,对吧?!你指出了显而易见的事实,但我没有领会。我有核心数据模板,它的方法由我的tableViewController填充,这是我加载主要项目的地方。既然您提到没有看到任何核心数据,我觉得没有任何细节和添加视图,这是有道理的,因为我没有将任何核心数据方法带到这些实现文件中。我告诉过你我是新来的!哈哈,我很感激这个答案,至少它给了我一些可以继续下去的东西。