【问题标题】:How to make a NSMutableArray persist over time?如何使 NSMutableArray 随着时间的推移持续存在?
【发布时间】:2015-06-05 18:54:02
【问题描述】:

我是一名全新的 iOS 开发人员,之前没有使用 Objective-C 的经验,但我熟悉 C 编程语言和面向对象的编程范式。

首先,我按照Start Developing iOS Apps Today 教程开发了一个基本的待办事项列表应用程序,其中每个项目都是存储在NSMutableArray 中的NSMutableString 对象。我的应用程序运行正常。但是,当我在模拟器上退出并重新启动应用程序时,我的待办事项列表会消失。很明显,这是因为我没有提供让数组随时间持续存在的方法。

Here 使用NSUserDefaults 可以解决这个问题,但我发现这不是一个有效的解决方案,主要是因为NSUserDefaults 是专门为存储用户的偏好而设计的,性能非常差。因此,我正在寻找另一种仍然简单直接的解决方案,以使我的应用程序更加专业。尽管如此,我在理解将代码放置在何处(即在哪些类和方法中)以实现这一点时遇到了一些麻烦。

提前谢谢你。

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    为了使数据随着时间的推移持续存在,我建议您查看NSCodingCoreData。它们都易于使用和实现。

    NSCodingexample

    核心数据example

    【讨论】:

      【解决方案2】:

      即使有像 CoreData 这样的解决方案专门用于解决这个问题,您可能想要更轻松、更快速地实施,但仍然比在用户默认值中保存垃圾更干净。

      NSMutableArray 符合NSCoding,因此只要它包含的项目也符合NSCoding,您可以轻松地将其存储在文件中并使用方法将其取回

      - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
      - (NSArray *)initWithContentsOfFile:(NSString *)aPath
      

      请记住,如果您要存储布尔值之类的原始类型,可能会遇到问题,因此我建议您使用 NSNumber 来保存它们。

      【讨论】:

      • 谢谢。现在的问题是我不知道在哪里使用这些方法。我的数组是在viewDidLoad 方法中创建的,并预先填充了一些初始数据。所以我必须在viewDidLoad 中使用initWithContentsOfFile 方法。写作过程是怎样的?它必须放在哪里?
      • 这取决于您的需求和应用程序的架构。您可能希望在任何 init / viewDidLoad 方法中加载它,并且您可能希望将其存储在任何更改中,由您决定何时保存/加载。
      猜你喜欢
      • 1970-01-01
      • 2019-01-25
      • 2016-07-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 2011-03-07
      相关资源
      最近更新 更多