我是SO的新手,也是iOS开发的新手。我已经在iTunes上完成了CS193P课程,并准备好解决我的第一个正确的应用程序。我有原型设置,只需要一些关于从哪里开始的参考指针(需要信心)。
应用程序的前提是允许用户将条目添加到2个可用列表中的1个;给予或接收列表。这些条目将包括“事件名称”,“名称”,“日期”等内容。当然,用户还可以选择浏览列表并查看条目;我想允许用户选择是按名称,日期还是事件进行搜索。
我已经完全设置了原型,我只是想知道这种应用程序是否会被认为类似于地址簿?用户可以添加人员姓名(或从联系人中选择姓名)等。
在这里为我们非常基本的问题道歉,但是实际上没有人有任何好的参考点,创建一个附加到特定列表的entires列表。我熟悉模态视图控制器和代理人;我基本上想知道我应该用什么来“存储”用户添加的内容。我应该使用核心数据还是其他技术等?
谢谢! 阿米特
答案 0 :(得分:0)
是的,您必须使用Core Data来存储条目。否则,每当用户重新打开应用程序时,所有条目都将消失。
答案 1 :(得分:0)
我一直在使用NSKeyedArchivers来存储列表。 http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSKeyedArchiver_Class/Reference/Reference.html
非常易于管理,可以轻松存储,保存和检索所有数据。
示例是对象的列表(NSMutableArray)。每个对象实现NSCoding并具有initWithCoder:和encodeWithCoder:functions。
e.g。 (假设对象具有名称和日期属性)
- (id) initWithCoder:(NSCoder *){
self = [super init];
if (self){
[self setName:[aDecoder decodeObjectForKey:@"name"]];
[self setDate:[aDecoder decodeObjectForKey:@"date"]];
}
return self;
}
- (void) encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:name forKey:@"name"];
[aCoder encodeObject:date forKey:@"date"];
}
然后你可以简单地让你的NSMutableArray添加这些对象,由具有以下功能的东西管理,然后只需调用saveChanges:
- (NSString *) itemArchivePath{
NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [documentDirectories objectAtIndex:0];
return [documentDirectory stringByAppendingPathComponent:@"myArchiveName.archive"];
}
- (BOOL) saveChanges{
NSString *path = [self itemArchivePath];
return [NSKeyedArchiver archiveRootObject:myList toFile:path];
}
实现这两个功能后,您只需调用saveChanges。
要在下次启动后检索列表,请在经理的init中
- (id) init{
self = [super init];
if (self){
NSString *path = [self itemArchivePath];
myList = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
// If the array hadn't been saved previously, create a new empty one
if (!myList){
myList = [[NSMutableArray Alloc] init];
}
}
}
答案 2 :(得分:0)
你的问题非常笼统,所以这里是我的一般答案:我建议使用Core Data存储列表,并使用NSFetchedResultsController来显示它们。我还建议您查看免费的Sensible TableView框架,我经常使用该框架来自动执行与您手头的任务非常相似的任务。