【问题标题】:Saving and retrieving history iphone保存和检索历史 iphone
【发布时间】:2013-04-09 12:51:14
【问题描述】:

在我的应用程序中,我正在上传各种类型的数据,例如图像、音频、视频、文本。现在我希望该用户应该能够查看最近上传的 100 个项目,即使他退出并重新打开应用程序也是如此。为此,我将创建一个包含表格视图的视图。表格视图将填充最近上传的 100 个项目。现在我想通过 NSUserDefaults 来实现它。对于图像、音频和视频,iphone 返回它们的路径或 URL,我必须将其存储到 NSUserDefaults 但表视图必须由数组填充,所以我如何将文件路径存储到 NSUserDefaults 或数组然后获取这些项目填充我的表格视图。或者有没有比 NSUserDefaults 更容易实现的更好的选择?

【问题讨论】:

    标签: objective-c uitableview nsmutablearray nsuserdefaults data-persistence


    【解决方案1】:

    如果数据不止这些,不妨试试 sqlite 数据库。如果只是这些数据,只为它创建一个数据库似乎有点过头了。您可以使用类似于以下内容的方式将数组保存到 NSUserDefaults:

    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"sd"] forKey:@"k"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    
    NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"k"];
    if( array == nil )  {
        //No data
    }
    else {
        for( NSString *string in array ) {
            NSLog(@"String: %@",string);
        }
    }
    

    缺点是,如果您想在数组中存储自定义对象,则需要手动对对象进行编码,详情请参阅post

    【讨论】:

    • 但我如何确保数组中始终有 100 个项目,并且它们不断替换为最近的新项目?
    • 从 NSUserDefaults 获得数组后,更改它,从中创建一个可变数组。当您将其写回时,它将覆盖旧数组。数组包含什么取决于你,上面的代码将存储你给它的任何基 NSObject 派生类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2019-01-16
    • 2012-01-23
    相关资源
    最近更新 更多