好的,lemme开始说我是新来的!大声笑我已经尽职尽责地研究了这些主题(迄今为止有4本书和许多视频)并且搜索了几个小时,但仍未找到答案。
我觉得我对核心数据,或至少是后端数据库方面有深刻的理解。我已经构建了我的应用程序,并且已经构建了我的模型我的应用程序有一个Tabbar控制器以及每个单独选项卡的导航控制器。
我的应用程序将有一个项目表视图,用于填充Core Data中这些项目的名称。选择项目后,navController会弹出一个详细视图,该视图会加载该项目的其余数据。
当用户点击+添加项目时,我需要弹出另一个带有字段的View Controller来添加名称和详细信息(它可以)。但是,我似乎无法获得这些细节。我想我需要将用户输入转换为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];
}
我在Core Data上找到的所有文档都指向了填充现有数据库的方向,而不是接受用户输入。因此,如果我在接近我的方法并且答案不仅仅是一个简单的答案,请指出我正确的方向!!
此外,我已将项目添加到我的Core Data商店,该商品已成功保留。但是,我的应用程序中尚未创建sqlite DB,我认为这是自动发生的。所以我可能遇到的问题比我想象的要多!
到目前为止,我发现这个网站是一个巨大的帮助,即使我的声誉不允许我评价答案!
无论如何,提前感谢您的帮助。
答案 0 :(得分:1)
在大多数Core Data实现中,除非您同时向关系添加多个托管对象,否则不直接处理集。我不确定你在这里想做什么。
在显示的代码中,您不会执行与Core Data相关的任何操作。您没有上下文,并且不会在上下文中插入可以使用新数据填充的新托管对象。实际上,您似乎根本没有任何托管对象。
我建议您查看Xcode中基于导航的项目模板。它显示了如何设置Core Data堆栈以及如何添加和删除tableview中显示的对象。