问题标签 [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.

0 投票
1 回答
71 浏览

ios - NSUserDefaults 和归档器检索问题

我遇到了一个奇怪的问题NSArray。该应用程序需要在具有不同输入的两个场景中访问相同的 Web 服务。一种是初始状态,来自服务器的响应NSUserDefaultsNSKeyedArchiver. 接下来是在完成特定操作时,然后根据响应NSUserDefaults修改存储的值。

当我尝试取消归档之前存储的数据时,它会打印@“6 个对象”而不是 6 个 ActiveOrder 对象。

我正在使用上面的行来访问存储的值以进行修改。我很困惑为什么它打印@“6 个对象”而不是实际对象。而且它随机崩溃(猜测这可能是原因)。有什么我做错了NSKeyedArchiver/NSKeyedUnarchiver

很高兴知道解决方案。谢谢!

0 投票
1 回答
82 浏览

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

0 投票
0 回答
213 浏览

ios - 通过 NSUserDefaults 与今天的扩展共享自定义数据

这是我的第一篇文章,所以请对我友善和建设性。

我试图通过 NSuserDefauls 与我的 Today Extension 共享一组自定义对象。

我知道我不能将自定义对象放在 NSUserdefaults 中,所以我通过 NSKeyedArchiver - NSKeyedUnarchiver 对它们进行编码,以便在 NSData 中转换它们。

这是我的自定义课程

这是应用程序内部的编码功能。

此时看日志,数据好像是在NSUserDefaults中写入的

在这里我尝试检索扩展中的数据

当我尝试执行扩展时,没有错误,只是空数组。特别是NSArray *dummyArray = [defaultArray arrayForKey:@"counts"];似乎是空的,所以某处数据不流动。

我做错了什么??

任何类型的提示将不胜感激。

0 投票
2 回答
3468 浏览

ios - 在 Swift 的 NSUserDefaults 中保存自定义类对象

我试图将一些对象保存在数组中,但我的对象使用继承的属性但是当试图读取它说的对象时

结构是

以这种方式我使用此代码

这是类功能

-我的问题出在从 Servicio 继承的 Service1 中

0 投票
3 回答
177 浏览

swift - 使用泛型在 Swift 中取消归档自定义对象

我正在尝试编写代码以将 NSData 从 NSUserDefaults 取消归档到自定义对象中,到目前为止我已经得到了这个 -

不幸的是,它返回垃圾。如果我在取消归档时将 T 切换为类类型,则会正确创建对象 -

但这显然违背了泛型的目的。

任何帮助等,非常感谢

0 投票
1 回答
241 浏览

objective-c - 重命名核心数据可转换

CoreData用来管理我的应用程序中的离线存储。离线存储的数据以自定义NSObject形式保存在xcdatamodel.

我在应用程序 ( v1.0 )中的当前版本正在存储Navigation该类。

我需要重命名Navigation该类以解决我的代码库的另一个目标中的一些名称空间问题。

在 2.0 版中,应用程序崩溃了,因为当我搜索CoreData商店时,NSKeyedUnarchiver由于缺少Navigation类而失败。

迁移当前CoreData商店以解决此问题的最佳方法是什么?

我试过这样的事情:

尽管我会很聪明地捕捉到异常并尝试仅获取 ObjectID 以删除我商店中的损坏数据。但它不起作用……</p>

0 投票
0 回答
71 浏览

ios - 当我使用 NSKeyedUnarchiver 解码时,NSDictionary 为零,即使在传递有效数据对象时也是如此

我使用 NSKeyedArchiver 在核心数据下使用以下代码存储 NSDictionary 对象。

当使用键 @"voterExtraInfo" 检索相同的字典时,NSDictionary 显示为零。我的检索代码是

请建议。这是我要存储的字典。

0 投票
0 回答
155 浏览

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。把这个留给其他人...

0 投票
0 回答
634 浏览

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)

创建文件路径

保存图像

加载图像 - 这是发生崩溃的地方

0 投票
2 回答
397 浏览

ios - NSKeyedUnarchiver 在后续应用启动后返回 nil

编辑:检查并重新检查了文件路径、归档和取消归档的代码,没有发现任何错误。App File System 在我不知道的启动之间是否存在问题?

我正在使用 NSCoder 在我的应用程序中存储图像。我创建了一个唯一的文件路径,将该文件路径存储到 Core Data,并使用文档中的相同文件路径归档图像。

在应用程序第一次启动时,一切都按预期工作 - 保存在 Core Data 中的文件路径用于取消归档存储在 Documents 中的图像。然而,在随后的启动中,unarchiver 返回 nil,我遇到了崩溃。

ImageForArchiving.m - 要使用 init 和 encode 方法保存的对象

保存到存档、核心数据、创建文件路径和解档代码

循环通过 Core Data 数组加载数据源。未归档对象的添加是 w