nskeyedarchiver 可以存到数据库吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nskeyedarchiver 可以存到数据库吗相关的知识,希望对你有一定的参考价值。

参考技术A nskeyedarchiver 可以存到数据库吗
某个类的多个实例?内存存储中用NSArray就可以。硬盘中存储,用归档的方式简单些,需要类实现NSCoding协议,然后同样先用NSArray先添加好实例对象,然后把这个列表归档存储。如:Class c1,c2,c3,c4...NSString *path = ... //路径NSArray *list = @[c1, c2, c3, c4];[NSKeyedArchiver ]; // 存NSArray *cachedList =[NSKeyedUnarchiver ]; // 取
参考技术B nskeyedarchiver 可以存到数据库吗
1.用处很大. 但是用起来 比较麻烦.要从程序设计的时候就 把每一个类实现这个功能 .将内存中的 对象实例保存成 binary 到 磁盘 并且可以 逆向这个过程 用来保存 用户操作状态.
2.iPhone和symbian 3rd一样,会为每一个应用程序生成一个私有目录,这个目录位于/Users/sundfsun2009/Library/Application Support/iPhone Simulator/User/Applications下,并随即生成一个数字字母串作为目录名,在每一次应用程序启动时,这个字母数字串都是不同于上 一次的,上一次的应用程序目录信息被转换成名为.DS_Store隐藏文件.

NSKeyedArchiver 线程安全吗?

【中文标题】NSKeyedArchiver 线程安全吗?【英文标题】:NSKeyedArchiver thread safe? 【发布时间】:2015-10-01 14:34:28 【问题描述】:

我是否需要担心在后台线程中使用archiveRootObjectunarchiveObjectWithFile

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
    [NSKeyedArchiver archiveRootObject:myArray toFile:file];
);

【问题讨论】:

【参考方案1】:

你应该非常小心。 archiveRootObject 不是原子操作。例如,如果您在后台线程上调用archiveRootObject,而另一个线程更改正在归档的对象的状态,您最终可能会归档该对象的非法状态。当然,这在很大程度上取决于您的应用程序以及您如何为对象实现归档/取消归档例程。

但是,如果您可以确保对象在归档后台线程正在进行时不会更改其状态,那么这样做应该是安全的。

【讨论】:

【参考方案2】:

由于它是一个同步调用,所以如果您正在保存大量数据并且不想阻塞 UI,那么您应该考虑使用后台线程。

否则,如果您的要求是在完成时显示一些状态/检查/操作,那么您不需要线程。

最后,这一切都取决于您的应用需求。

在link查看更多信息

【讨论】:

以上是关于nskeyedarchiver 可以存到数据库吗的主要内容,如果未能解决你的问题,请参考以下文章

Xcode-project 不使用 NSKeyedArchiver 存档,但 Playground 可以

是否可以将带有 NSKeyedArchiver 的 NSMutableArray 保存到核心数据中?

NSKeyedArchiver 和 NSValue - 如何存档?

IOS数据持久化之归档NSKeyedArchiver

iOS NSKeyedArchiver(轻量级缓存)

NSKeyedArchiver 和 NSKeyedUnarchiver 与 NSMutableArray