问题标签 [nskeyedunarchiver]
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.
ios - NSUserDefaults 和归档器检索问题
我遇到了一个奇怪的问题NSArray
。该应用程序需要在具有不同输入的两个场景中访问相同的 Web 服务。一种是初始状态,来自服务器的响应NSUserDefaults
在NSKeyedArchiver
. 接下来是在完成特定操作时,然后根据响应NSUserDefaults
修改存储的值。
当我尝试取消归档之前存储的数据时,它会打印@“6 个对象”而不是 6 个 ActiveOrder 对象。
我正在使用上面的行来访问存储的值以进行修改。我很困惑为什么它打印@“6 个对象”而不是实际对象。而且它随机崩溃(猜测这可能是原因)。有什么我做错了NSKeyedArchiver
/NSKeyedUnarchiver
很高兴知道解决方案。谢谢!
ios - iOS NSKeyedUnarchiver 没有得到正确的值
我简化了提问的代码。
我想保存更多类并加载类模型文件。
但是现在我将参数简化为模型(FlightSettingModel.h)中的一部分(lim)。
在 FlightSettingModel.h 中,我在这里设置了一些参数。
FlightSettingModel.h 代码如下:
FlightSettingModel.m 代码如下
然后我将单例 SettingData 文件设置为初始化 FlightSettingModel 和其他模型类。
SettingData 模型头如下:
SettingData.m 代码如下:
在我的故事板(UI)中如下所示:
当我单击保存按钮时,我想将自定义类模型(FlightSettingModel.h)保存在 NSKeyedArchiver 中。当我单击加载时,我想使用 NSKeyedUnarchiver 从存档器加载模型并重置为滑块。
但是现在,当我将滑块拖动到其他值(例如:10)时,然后单击保存,然后关闭应用程序重新启动应用程序。我单击加载,滑块值将变为 0。
我不知道为什么当我加载值时,所有值都会变为 0;
我的视图控制器代码 .m 下面:
有谁知道我的代码中的问题在哪里?
非常感谢您。
如果你想下载完整的代码(问题代码),我已经上传到github
ios - 通过 NSUserDefaults 与今天的扩展共享自定义数据
这是我的第一篇文章,所以请对我友善和建设性。
我试图通过 NSuserDefauls 与我的 Today Extension 共享一组自定义对象。
我知道我不能将自定义对象放在 NSUserdefaults 中,所以我通过 NSKeyedArchiver - NSKeyedUnarchiver 对它们进行编码,以便在 NSData 中转换它们。
这是我的自定义课程
这是应用程序内部的编码功能。
此时看日志,数据好像是在NSUserDefaults中写入的
在这里我尝试检索扩展中的数据
当我尝试执行扩展时,没有错误,只是空数组。特别是NSArray *dummyArray = [defaultArray arrayForKey:@"counts"];
似乎是空的,所以某处数据不流动。
我做错了什么??
任何类型的提示将不胜感激。
ios - 在 Swift 的 NSUserDefaults 中保存自定义类对象
我试图将一些对象保存在数组中,但我的对象使用继承的属性但是当试图读取它说的对象时
结构是
以这种方式我使用此代码
这是类功能
-我的问题出在从 Servicio 继承的 Service1 中
swift - 使用泛型在 Swift 中取消归档自定义对象
我正在尝试编写代码以将 NSData 从 NSUserDefaults 取消归档到自定义对象中,到目前为止我已经得到了这个 -
不幸的是,它返回垃圾。如果我在取消归档时将 T 切换为类类型,则会正确创建对象 -
但这显然违背了泛型的目的。
任何帮助等,非常感谢
objective-c - 重命名核心数据可转换
我CoreData
用来管理我的应用程序中的离线存储。离线存储的数据以自定义NSObject
形式保存在xcdatamodel
.
我在应用程序 ( v1.0 )中的当前版本正在存储Navigation
该类。
我需要重命名Navigation
该类以解决我的代码库的另一个目标中的一些名称空间问题。
在 2.0 版中,应用程序崩溃了,因为当我搜索CoreData
商店时,NSKeyedUnarchiver
由于缺少Navigation
类而失败。
迁移当前CoreData
商店以解决此问题的最佳方法是什么?
我试过这样的事情:
尽管我会很聪明地捕捉到异常并尝试仅获取 ObjectID 以删除我商店中的损坏数据。但它不起作用……</p>
ios - 当我使用 NSKeyedUnarchiver 解码时,NSDictionary 为零,即使在传递有效数据对象时也是如此
我使用 NSKeyedArchiver 在核心数据下使用以下代码存储 NSDictionary 对象。
当使用键 @"voterExtraInfo" 检索相同的字典时,NSDictionary 显示为零。我的检索代码是
请建议。这是我要存储的字典。
ios - 显示从本地文件加载的 UIImageView 的长时间延迟?
我看到有关下载后显示 UIImageViews 的长时间延迟的问题,但我的问题涉及从本地存储读取时的长时间延迟。
将我的 UIImageViews 层次结构归档到本地文件后(根据 narohi 在 How to output a view hierarchy & contents to file?中的回答),我发现如果我想重新加载它们,视图实际上需要 5 到 20 秒尽管我在主视图和所有子视图上设置了 setNeedsDiplay() ,但仍出现在屏幕上。
我可以立即查询加载的 UIView 的自定义子类中包含的数据——显示 NSKeyedUnarchiver 和所有 NS 解码以及所有 init() 都已完成——但是图像只是没有出现在屏幕上需很长时间。下一个重绘周期肯定会短于 5-20 秒...?
来自 PhotoLibrary 的图像立即出现似乎很奇怪,但使用 NSKeyedUnarchiver 从本地文件存储加载的任何内容都需要“永远”。
这是怎么回事,我怎样才能加快速度?
.
.
明确地说,我的 Swift 代码的相关部分如下所示:
我发现,即使我添加类似...
...它不会加快操作速度。
我们也不是在谈论巨大的数据集,它可能只是一个正在重新加载的图像视图。
现在,我也注意到使用下载器从 Internet 下载时会出现这些延迟,例如 https://stackoverflow.com/a/28221670/4259243中所示的下载器 ......但我让下载器打印完成消息后不仅下载但是当(同步操作)data.writeToFile() 完成时(并且在我尝试使用 NSKeyedUnarchiver 加载它之前),所以这表明 UIImageView 重绘的延迟不是因为下载仍在开始......和就像我说的,你可以查询数据的属性,它都在内存中,只是不显示在屏幕上。
更新: 根据评论,我已根据 Leo Dabus 的建议在 dispatch_async 中包含了 needsDisplay 代码,并根据 Paulw11 进行了一些时间分析。时间分析结果的链接在这里:https ://i.imgur.com/sa5qfRM.png 我在 1:00 左右图像出现在屏幕上后立即停止了分析,但它实际上是在颠簸期间“加载”的20 多岁。那段时间好像什么都没有发生……?代码实际上只是在等待一段时间?
为了清楚我是如何实现 dispatch_async 的,请看这里:
...自从发布此消息以来,我发现了一些人们抱怨 NSKeyedUnarchiver 有多慢的帖子。难道就这样吗?如果是这样, :-(。
第二次更新:啊,“let view =”需要在 dispatch_async 中。事实上,如果你只是把整个东西放在 dispatch_async 中,它就可以很好地工作!所以...
这立即起作用。哇.. 归功于 Leo Dabus。把这个留给其他人...
ios - NSKeyedArchiver 导致应用程序崩溃并出现异常错误
我正在尝试使用 NSCoding 和 NSKeyedArchiver 将图像保存到我的 Documents 文件夹中。该应用程序的工作原理如下:用户拍照,查看预览,保存图像,然后可以在图库部分查看图像。我不会同时保存多个图像。
我遇到了崩溃,不知道我是否错误地存档了图像,我的照片类设置是否不正确,或者我的取消存档代码是否错误。最终我需要抓取对象并使用它们来填充集合视图。
当我调用代码来加载对象时,我遇到了一个看起来像这样的崩溃
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ImageForArchiving countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x174232da0' *** First throw call stack: (0x18533c22c 0x196fb00e4 0x1853432f4 0x1853400a8 0x18524296c 0x10001aefc 0x189ded1ec 0x189dd62c8 0x189decb88 0x189dec814 0x189de5d50 0x189db8f74 0x18a05a124 0x189db7488 0x1852f3f8c 0x1852f3230 0x1852f12e0 0x18521cf74 0x18ec7f6fc 0x189e1ed94 0x10001840c 0x19765aa08) libc++abi.dylib: terminating with uncaught exception of type NSException
我的子类代码如下所示。ImageForArchiving 符合 NSCoder 协议。
ImageForArchiving.h
@结尾
ImageForArchiving.m
存档代码在预览 VC 中,用户可以在拍摄后查看照片。它显示为从带有块的 segue 中弹出的模式。
PreviewViewController.m (保存图像 IBAction)
创建文件路径
保存图像
加载图像 - 这是发生崩溃的地方
ios - NSKeyedUnarchiver 在后续应用启动后返回 nil
编辑:检查并重新检查了文件路径、归档和取消归档的代码,没有发现任何错误。App File System 在我不知道的启动之间是否存在问题?
我正在使用 NSCoder 在我的应用程序中存储图像。我创建了一个唯一的文件路径,将该文件路径存储到 Core Data,并使用文档中的相同文件路径归档图像。
在应用程序第一次启动时,一切都按预期工作 - 保存在 Core Data 中的文件路径用于取消归档存储在 Documents 中的图像。然而,在随后的启动中,unarchiver 返回 nil,我遇到了崩溃。
ImageForArchiving.m - 要使用 init 和 encode 方法保存的对象
保存到存档、核心数据、创建文件路径和解档代码
循环通过 Core Data 数组加载数据源。未归档对象的添加是 w