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 【问题描述】:我是否需要担心在后台线程中使用archiveRootObject
和unarchiveObjectWithFile
?
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 保存到核心数据中?