将 NSMutableArray 保存到磁盘

2023-12-24

我有一个 NSMutableArray 保存类型为 Person (NSString,NSString,int) 的对象 我正在寻找一种简单的方法来将该数组保存到光盘并稍后再次加载。

我读了很多有关序列化的内容,但我从未这样做过。也许这对我来说并不是最简单的方法。


第一步是让您的 Person 类实现 NSCoding 协议。基本策略是实现两种方法来序列化和取消序列化要在会话之间保留的每个对象的实例变量。

#pragma mark NSCoding Protocol

- (void)encodeWithCoder:(NSCoder *)encoder;
{
    [encoder encodeObject:[self foo] forKey:@"foo"];
    [encoder encodeDouble:[self bar] forKey:@"bar"];
}

- (id)initWithCoder:(NSCoder *)decoder;
{
    if ( ![super init] )
        return nil;

    [self setFoo:[decoder decodeObjectForKey:@"foo"]];
    [self setBar:[decoder decodeDoubleForKey:@"bar"]];

    return self;
}

要实际将对象写入磁盘,您可以使用 NSArraywriteToFile:方法,或者如果您想更明确地了解它是如何完成的,请使用 NSKeyedUnarchiver 类。在这两种情况下,如果您想在数据文件中包含其他项目(例如文件格式编号),您还可以将数组放入另一个数据结构(例如字典)中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 NSMutableArray 保存到磁盘 的相关文章

随机推荐

  • PHP 本周的工作日,为什么 date() 和 strtotime 取下周?

    我使用以下代码来获取工作日的 Y m d 格式 monday date Y m d strtotime Monday tuesday date Y m d strtotime Tuesday wednesday date Y m d str
  • 如何编写基于类的 Django 验证器?

    我正在使用 Django 1 8 The 有关编写验证器的文档 https docs djangoproject com en 1 8 ref validators writing validators有一个基于函数的验证器的示例 它还说明
  • Java 杀死或终止线程

    大家好 基本上 当用户按下 终止 按钮时 我需要终止或停止正在运行的线程 该线程循环遍历数组列表并在 JTextArea 上显示每个事件 要求是当用户按下 终止 按钮时 我需要终止正在运行的线程 同时向数组列表添加一个新的 终止 事件 并让
  • 如何扩展 Pydantic 对象并更改某些字段的类型?

    有两个类似的 pydantic 对象 唯一的区别是有些字段是可选的 如何只定义一个对象中的字段并扩展到另一个对象中 class ProjectCreateObject BaseModel project id str project nam
  • 如何让 JOOQ 在 IN 子句中使用数组

    我想要JOOQ生成 in 并将列表绑定为数组参数 Postgres 我的代码看起来像 where Tables TABLE FIELD in idsList 我怎样才能做到这一点 为什么默认情况下不这样做 因为它比字符串的生成 和由 PG
  • 如何向 PHP 添加证书颁发机构,以便 file() 函数信任其签名的证书?

    我需要打开由私人公司的证书颁发机构签名的远程资源 目前 PHP 不会打开资源 因为它不信任证书签名者 我知道您可以使用流上下文对象执行证书 但我正在寻找一种方法来为 PHP 提供新证书颁发机构的公钥并拥有file 和类似的方法信任由该机构签
  • 如何从完整字符串 iOS swift 中找到字符串的多个 NSRange

    let fullString Hello world there are string 07 continents and string 195 countries let range NSMakeRange 24 2 NSMakeRang
  • Android NDK 的 Netlink 实现

    我有一个类似任务的要求 如中提到的这个链接 https kristrev github io 2013 07 26 passive monitoring of sockets on linux Android 中套接字的被动监控 一种方法是
  • Android Kotlin - 如何扩展 ConstraintLayout?

    我希望我的 ConstaintLayout 带有额外的附加属性 但我在扩展它时遇到了麻烦 更准确地说 我无法将正确的构造函数放入 class myCL ConstraintLayout 为了确保您的行为不会出现任何怪癖 您应该像这样实现它
  • “size”和“length”方法有什么区别

    当我跑的时候size and length在字符串上 它们返回相同的值 akash size gt 5 akash length gt 5 这两种方法有什么区别 Summary 在 Ruby 中 方法可以被重写 因此有些类中的多个方法会产生
  • 十六进制或二进制数中的数字之前是否允许使用数字分隔符?

    C 14 将数字分隔符的概念引入到文字中 大致如下 3 141 592 653 589 现在这是一个great具有可读代码的功能 但我想知道它是否允许引号beforea 的数字部分0x 0b 类型文字 在我看来 这 unsigned int
  • ffmpeg 使用什么格式/协议进行“原始”输出?

    给定一个命令行ffmpeg f lavfi i sine frequency 1000 duration 5 ar 8000 c a FOO pipe 1 ffmpeg 可能会抱怨它 无法找到合适的输出格式 对于某些编解码器 ffmpeg
  • .NET 创建新的调度程序

    我正在尝试使用调度程序创建第二个线程 以便我可以让主调度程序 用于 UI 完全无压力 并且让 UI 不断响应 现在 我可以为每个子线程 或 C 中的 void 创建多个线程 但我是否有可能创建一个新线程并获取它的调度程序 然后调用它 这就是
  • Linq 按两个字段进行分组并求平均值

    我有以下 C 模型 public class RawData public int questionnaireId get set public int coachNodeId get set public int questionnair
  • 如何让jquery每个数字

    这是我的代码 each 3 function n alert n 我想提醒三遍 但没有成功 我能做些什么 each必须对一个对象进行操作 尝试创建一个长度为 3 的数组 例如 each new Array 3 function n aler
  • 不允许部分应用“变异”方法

    struct MyStruct var count 0 mutating func add amount Int count amount var myStruct MyStruct 1 2 3 4 forEach myStruct add
  • GAE:进程终止,因为后端在后端作业中关闭时间太长

    我的后端作业基于 cron 作业 每 4 小时一次 运行 但它在没有处理数据的情况下终止 服务器日志显示如下 500 15377121ms 0kb instance 0 AppEngine Google http code google c
  • 通过 OpenCV 将 MTCNN 与网络摄像头结合使用

    我希望能够使用网络摄像头并利用 MTCNN 作为主要面部检测器 正如可以使用 Haar Cascades 一样 我想使用 MTCNN 在我的网络摄像头上查找人脸 该视频是关于打破 MTCNN 的 但仍然提供了我的目标的见解 https ww
  • 有关 Dart 隔离的最新文档

    我最近开始使用 Dart www dartlang org http www dartlang org 并且到目前为止真的很喜欢它 一个非常有前途的功能是隔离 但我不确定如何开始 到目前为止我找到的文档来自重大更改之前 重大变更 dart
  • 将 NSMutableArray 保存到磁盘

    我有一个 NSMutableArray 保存类型为 Person NSString NSString int 的对象 我正在寻找一种简单的方法来将该数组保存到光盘并稍后再次加载 我读了很多有关序列化的内容 但我从未这样做过 也许这对我来说并