创建允许用户向两个单独列表添加项的应用程序的起点



我最初是SO新手,也是iOS开发新手。我已经在iTunes上完成了CS193P课程,并准备好处理我的第一个适当的应用程序。我已经设置了原型,只需要一些关于从哪里开始的参考指针(需要这种信心)。

应用程序的前提是允许用户向2个可用列表中的1个添加条目;赠与或收受清单。条目将包括"事件名称"、"名称"、"日期"等内容。当然,用户也可以选择浏览列表并查看条目;我希望允许用户选择是否按姓名、日期或事件进行搜索。

我已经完全设置了原型,我只是想知道这种应用程序是否会被认为类似于地址本?用户可以添加联系人的姓名(或从联系人中选择姓名),等等。

为我们在这里提出的非常基本的问题道歉,但是有人有任何好的参考点,基本上,创建一个附加到特定列表的完整列表吗?我熟悉模态视图控制器和委托;我基本上想知道我应该使用什么来"存储"用户添加的全部内容。我应该使用Core Data还是其他技术等等?

谢谢!Amit

是的,您必须使用Core Data来存储条目。否则,当用户重新打开应用程序时,所有条目都会消失。

我一直在使用NSKeyedArchivers来存储列表。http://developer.apple.com/library/ios/文档/可可/引用/基金/类/NSKeyedArchiver_Class/引用/Reference.html

非常容易管理,它可以轻松地存储,保存和检索您的所有数据。

示例将是一个对象列表(NSMutableArray)。每个对象实现NSCoding,并具有initWithCoder:和encodeWithCoder:函数。

。(假设对象有名称和日期属性)

- (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];
         }
    }
}

你的问题是非常普遍的,所以这里是我的一般答案:我建议使用Core Data来存储列表,并使用NSFetchedResultsController来显示它们。我还建议你看看免费的Sensible TableView框架,我经常使用它来自动执行与你手头上的任务非常相似的任务。

最新更新