2010-07-29 73 views
0

好对象添加到持久性存储,还是让我开始时说林新本! LOL我已经尽全力研究这些话题(迄今为止有4本书和大量视频),并且一直在搜寻小时,但还没有找到答案。从用户输入

我觉得我有核心数据的深入了解,或至少它的后端数据库侧。我有我的应用程序构建,我有我的模型构建。我的应用程序有一个Tabbar控制器以及每个单独选项卡的导航控制器。

我的应用程序将具有填充从核心数据这些项目的名称的项目表视图。选择该项目后,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数据库,我认为这是自动发生的。所以我可能会遇到比我想象的更多的问题!

到目前为止,我发现这个网站是一个巨大的帮助,尽管我的声誉犯规让我评价答案!

无论如何,在此先感谢您的帮助。

回答

1

在最核心的数据实现,你不带套直接交易,除非你同时添加多个管理对象的关系。我不确定你在这里做什么。

中的代码,你没有做任何相关的核心数据。您没有上下文,也不会在上下文中插入一个新的托管对象,您可以使用新数据填充该托管对象。事实上,你似乎没有任何管理对象。

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

+0

TechZen 通常情况下,最简单的答案是正确的,对不对?你指出了明显的,但我没有拿起它。 我有核心数据模板,它的方法由我的tableViewController填充,这是我的主要项目加载。既然你提到没有看到任何核心数据,那么在细节和添加视图中没有任何东西显示给我,因为我没有将任何核心数据方法带到这些实现文件中。 我告诉你,我是新人! LOL 我很欣赏答案,至少它给了我一些继续。 – iMerlin 2010-07-29 18:42:37