【问题标题】:Storing object on iOS - best solution?在 iOS 上存储对象 - 最佳解决方案?
【发布时间】:2013-01-01 02:46:44
【问题描述】:

我正在为博客构建一个应用程序,用户可以在其中保存他们最喜欢的帖子。

当他们这样做时,我想存储我的对象,其中包含:帖子的 URL、标题和图像 URL。

我应该立即选择UserDefaults(以前的NSUserDefaults)还是从Core Data开始?

【问题讨论】:

    标签: ios uitableview core-data nsuserdefaults


    【解决方案1】:

    我应该选择 User Defaults 还是立即开始使用 Core Data?

    这里有更多的可能性:你也可以使用普通文件或 plist,或者在没有 Core Data 的情况下使用 sqlite。答案取决于您计划存储的项目数量:

    • 如果您计划存储 1 到 20 个项目,用户默认设置可以正常工作
    • 如果您计划存储 20 到 200 个项目,则可以使用纯文件或 plist
    • 如果您计划存储 200 多个项目,请选择 Core Data 或 sqlite,具体取决于您对其中一种技术的熟悉程度。

    【讨论】:

    • +1:数字可能对您有所不同(特别是对于默认值/plist,数据的大小很重要,但一般建议是合理的
    • 也可能是使用 NSArchiver 编写二进制文件 ... id 说是 20 到 200
    • +1:对我来说听起来像是可靠的建议。就个人而言,我可能会在这里使用 Core Data 方法,假设用户可以喜欢很多这些项目......另外,使用 MagicalRecord(参见 github.com/magicalpanda/MagicalRecord),Core Data 非常简单。
    • 谢谢,我认为您的第二个解决方案最适合我,因为用户的收藏夹不应该太大。
    【解决方案2】:

    由于文章的收藏夹通常不会是 100K 项目,因此我会使用 NSDictionary 来获取项目并将它们存储到 NSMutableArray 中,然后将它们保存到文件中。它使用简单,您还可以将收藏夹导出到文件甚至iCloud 以在设备之间共享。

    NSMutableDictionary *item = [[ NSMutableDictionary alloc]init];
    [item setObject:@"www.google.com" forKey:@"url"];
    [item setObject:@"Google" forKey:@"title"];
    
    //Add each item to the Favourites array
    //You should declare this outside of the "addToFavourites" function.
    NSMutableArray *Favourites = [[NSMutableArray alloc]initWithObjects: nil];
    [Favourites addObject:item];
    
    //Save the Favourites NSMutableArray to the file.
    if([Favourites writeToFile:path atomically:NO]) 
       NSLog(@"Favourites are saved!");
    

    【讨论】:

    • 感谢示例代码。我现在确实计划使用这个技巧来存储我用户的收藏夹。
    猜你喜欢
    • 2019-10-14
    • 2015-03-30
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2020-04-12
    • 2014-07-11
    • 2019-07-14
    • 2014-12-12
    相关资源
    最近更新 更多