【问题标题】:Building a custom NSArchiver serialize to string构建自定义 NSArchiver 序列化为字符串
【发布时间】:2012-08-25 04:56:06
【问题描述】:

NSArchiver 如何序列化到文件?我假设它是以二进制格式序列化的,对吗?如果我想将它存储在字符串中以便存储到 SQLite 数据库中怎么办?我需要编写自己的自定义 NSArchiver 吗?如果是这样,我该怎么做?有教程吗?

附言我确实意识到 Core Data 可以做到这一点,但让我暂时取消该选项。

【问题讨论】:

    标签: objective-c nsarchiving


    【解决方案1】:

    如果需要,您可以使用+archivedDataWithRootObject: 归档到NSData 对象而不是文件。它不会是“字符串”,但这很好,因为 Cocoa 中的 NSString 代表 Unicode 字符序列,而 NSData 代表字节序列(您可以轻松地将其存储在任何您想要的位置,包括数据库)。

    请注意,您确实应该使用NSKeyedArchiver

    + (NSData *)archivedDataWithRootObject:(id)rootObject

    + (id)unarchiveObjectWithData:(NSData *)data

    【讨论】:

    • 如何在指南 (developer.apple.com/library/mac/documentation/Cocoa/Conceptual/…) 中说“您不应该用 NSData 对象包装结构并将其存档”?我要存储的结构是 C 中的双向链接列表。我正在实现它,我目前只是尝试将我的输入存储到 C API,以便以后可以使用基本材料重建它。
    • 这是关于将什么放入存档,而不是您如何使用存档的结果位。您的问题似乎是在问“我知道如何使用NSArchiver,但是有没有办法存档到内存而不是文件?” NSArchiver 用于 Objective-C 对象,而不是 C 结构,这正是该指南所说的。
    • 对,我没有说,但我碰巧想包装一个用 C 编写的双向链接列表,因此对您的回复感到困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多