问题标签 [nskeyedarchiver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 同步的 NSKeyedArchiver 或 NSUserDefaults
我有一个单例延迟事务管理器类,它负责将由于各种因素(网络可达性、邻近性等)而无法完成的 iphone 到应用程序服务器的事务入队和出队。当可达性/邻近性恢复时,它会尝试使事务出队。另一个事务也可能在出队发生的同时被入队。
我的理解是 NSUserDefaults 是可变字典SO 链接的线程安全包装器,这正是我想要的。相同的 SO 链接认为 NSUserDefaults 是针对用户偏好的。
这些交易不是用户偏好,但这是我想要的功能。所以,这里的问题是,我可以在 NSUserDefaults 中读取/写入/同步事务的 NSMutableDictionary 而不会损坏字典,还是需要通过 NSKeyed(Un)Archiver 读取和写入来实现自己的锁定机制(见下文)?
一些代码:
出队:
ios - 带有自定义对象的 NSKeyedUnarchiver
我有一个关于 NSKeyedUnarchiver、NSMutableArray 和自创类的问题。数据由 NSKeyedArchiver 存储到用户默认值。当数据加载到用户默认值时,将打印到数据流的控制台。我想将数据解包到一个数组中,该数组将为空。也许你们中的某个人知道我如何保存数组或数组负载。
谢谢你。
问候,舒米
objective-c - NSKeyedArchiver .plist 附加问题
**
- 我正在将数据从表单获取到数组中,并尝试使用 NSKeyedArchiver 将该数组写入 .plist 文件。
- 写入成功,但是每当我运行脚本时它都会覆盖以前的数据。
- 如何将新数据附加到 .plist 文件而不是覆盖?
**
——</p>
iphone - 如何读取使用 NSKeyedArchiever iPhone 编码的 .data 文件
我使用 NSKeyedArchiver 将 iPhone 应用程序中的数据归档到 .data 中。长话短说,我丢失了所有数据。我使用“iPhone 备份提取器”,效果很好。我为我的应用找到了一个 .data 文件。
为了清楚起见,我找到了一个 .data 文件,我会打开并查看其内容。我知道没有软件(例如:记事本)可能能够读取该文件,我可能不得不使用 Xcode。如果您知道任何方式,Xcode/notepad/someProgram,请告诉我。
这是我在构建应用程序时实现的代码:
此代码在 applicationWillTerminate、applicationDidEnterBackground 等期间调用...
在 didFinishLaunchingWithOptions 中恢复/调用数据,如下所示:
任何帮助表示赞赏!谢谢!!!
PS:iPhone 备份提取器的链接是http://supercrazyawesome.com/
ios - 使用 NSKeyedArchiver 杀死或重新启动应用程序后,NSMutableArray 消失
我有一个将Task
对象(自定义类)存储在NSMutableArray
. 该类Task
符合NSCoding
andNSCopying
协议,我也实现了encodeWithCoder
andinitWithCoder
方法。
当用户向 中添加新任务时NSMutableArray
list
,我使用NSKeyedArchiver
. list
填充UITableView
一个.
数据正在保存,当我退出应用程序并重新进入时,数据仍然存在。当我使用另一个应用程序一段时间并回来时,数据仍然存在。但是,当我在多任务任务管理或重新启动设备中“杀死”应用程序时,数据消失了。以下是一些重要的代码片段:
.
为什么当应用程序被“杀死”或设备重新启动时,我的应用程序不保存数据?此外,有趣的是,当我重新启动 iPhone 模拟器时,数据仍然存在。
objective-c - NSKeyedUnarchiver 的 NSMutableData 的限制
我读过另一篇文章(归档/取消归档导致 initForReadingWithData 无法理解的归档),您不能在 NSMutableArray 上存储超过 250kBytes。不幸的是,为了使用 NSKeyedUnarchiver 恢复此类数据,您必须使用 NSMutableArray。我正在尝试取回大小约为 500kB 的图像。
我得到的错误是:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** - [NSKeyedUnarchiver initForReadingWithData:]:无法理解的存档(0x0、0x10、0x4a、0x46、0x49、0x46、0x0、0x1)”
显然这是一种很常见的情况(尽管我还没有找到解决方案)。你知道如何绕过 NSMutableData 的使用吗?谢谢你。
编辑:实际上它说数据的大小为 524 288 字节,这是正确的,因此问题可能来自取消存档程序。
ios - iOS:附加到档案
任何人都可以推荐一种使用 NSKeyArchiver 将数据附加到存档的内存高效方法吗?
我有一个数组,它收集对象并将它们作为内存缓存提供给应用程序。为了避免消耗越来越多的内存,我想经常将此数组存档到一个文件中,保留一个缓存文件(而不是创建单独的缓存文件)。
一种方法是将现有文件取消归档到 tempArray,而不是将现有数组中的项目添加到其中:
[tempArray addObjectsFromArray:array];
然后存档数组:
[NSKeyedArchiver archiveRootObject:tempArray toFile:file];
这种方法有其自身的目的,因为您必须在存档新数据之前将整个存档读取到内存中。
任何人都可以推荐一个更优雅的解决方案?
iphone - 如何使用 NSKeyedArchiever 归档两个对象?
以前,我有一个使用 NSKeyedArchiver 归档的数组。
调用applicationWillTerminate
和applicationDidEnterBackground
。
启动时,在 中didFinishLaunchingWithOPtions
,数组未归档:
一切都很好。从那时起,我为 Settings 变量添加了一个 Singleton 类。我也想归档单例。我该怎么做?
让我困惑的部分是如果我调用相同的消息:
当我调用时,应用程序如何知道我要取消归档的对象:
是数组还是单例?
archiveRootObject 接受一个(id),这对我来说意味着我想要的任何东西。我可以创建一个包含数组和单例的数据类。这就是我应该这样做的吗?有没有更好的办法?欢迎任何建议。
谢谢!
iphone - 单例不会从应用程序委托持久化到另一个视图控制器
按照此链接:如何使用 NSKeyedArchiever 归档两个对象?我能够归档一个数组和一个单例对象。我可以在 didFinishLaunchingWithOptions 中归档和正确取消归档它。
但是,我的单例对象不会持续超过应用程序委托。在下一个视图控制器中,即使在 didFinishLaunchingWithOptions 中,我执行了 NSLog 并进行了验证,单例变量也会返回到其默认值。这是一个例子,
在应用中didFinishLaunchingWithOptions
:
NSLog(@"singleton sorting after decode: %@", [singleton sort]);
// 输出:字母
然后,我分配/初始化一个 viewController 并将其设置为我的导航控制器的根视图控制器:
在 viewController -> viewWillAppear 中,
我调用一个排序函数:[self sort...];
在排序函数中,我调用了单例类: Singleton*singleton = [Singleton sharedSingleton];
但是现在,NSLog(@"singleton sort: %@", [singleton sort]);
// 输出:amount NOT alphabet
我可以发布我的单例代码,但我知道它有效。事实上,在我的设置视图控制器中,如果我更改 [singleton sort] 变量,它将在所有视图控制器中持续存在。
这让我很困惑,为什么我的单例对象不会从应用程序委托持续到我的视图控制器。任何提示/提示表示赞赏。
谢谢!!!
编辑:单例类实现
在 Singleton.m 中:
objective-c - 使用 NSKeyedUnarchiver decodeObjectForKey 解码 NSArray 时的内存泄漏
我正在尝试修复在方法中某处导致的巨大内存泄漏,该方法从 CoreData 数据存储中获取 NSData 对象并将该 NSData 解压缩回 NSArray。
如果我释放 myArray (我不应该这样做,因为它是一个自动释放的对象),内存泄漏就会消失。
有谁知道如何解决这个问题?CustomObject 的 NSArray 中的项目是 NSDictionary 对象。
提前致谢
编辑: - (CustomObject *) getCustomObject 经常被调用,所以这个泄漏的影响是相当大的。