问题标签 [nscoding]

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 投票
2 回答
68 浏览

objective-c - Objective-C:如何让它为 NSCoding 保存两个文件而不是一个文件?

我的代码在这里:

如果我使用指定的 fileKey(即:“buttons”)保存一个文件一次,它会起作用。但是如果我想使用指定的 fileKey(即:“clocks”)将另一个文件保存到磁盘,它会覆盖“buttons”使用“时钟”,因此“无法再次访问按钮..

如何解决这个困境?我相信这应该是我“saveDataToDisk”(存档)的方式,我应该将一堆文件写入磁盘,而不是用最新的文件替换每个文件。

0 投票
1 回答
262 浏览

ios - 存储在序列化视图中的子类 UILabel 不存储自定义变量

所以,我有一个正在序列化并存储在文件中的视图。在该视图中,有n个子类 UILabel,唯一的区别是活动属性。我在 UILabel 子类中有 initwithcoder 和 encodewithcoder,但我仍然无法在标签中获取自定义变量。我已经包含了我的子类的方法和以下内容。任何帮助表示赞赏。

自定义UILabel:

因为我只是取消归档包含标签的视图,所以我假设 ios 不会取消归档自定义标签?

谢谢

0 投票
3 回答
2054 浏览

objective-c - NSCoding 使编码/解码加倍

我怎样才能使用-[NSCoder encodeBytes:length:]-[NSCoder decodeBytesWithReturnedLength:]双打?

我有一个符合NSCoding两个double属性的对象,目前正在使用NSNumber对值进行编码/解码:

但是,这给了我无法接受的性能(用我的测试数据解码需要 6 秒,这比生产数据小得多)。

如果我使用键,我可以使用-encodeDouble:forKey:,但我没有使用键(它们很慢),并且与 Mac OS X 不同-encodeDouble:,iOS 上没有方法。

所以,我需要使用encodeBytes:length:and decodeBytesWithReturnedLength:,但我的 C 能力非常有限。我不确定如何在void *和之间转换double

0 投票
1 回答
3086 浏览

ios - NSCoding NSKeyedUnarchiver unarchiveObjectWithFile:返回 null

我正在尝试使用 NSCoding 从我的应用程序中保存一些值。我能够保存该值但无法检索它。

这是我声明协议的地方:

这是我遵守协议的地方:

和这里:

这里是我调用归档和取消归档方法的地方:

以下是这些方法的主体及其 NSLog 内容:

这是解压缩代码及其 NSLog 内容:

我无法取消归档内容,我错过了什么?我只是专注于我的编码器/解码器方法中最简单的值,只是为了测试它,但我什至无法让字符串值工作。

谢谢

0 投票
3 回答
502 浏览

iphone - 应用程序在 4S 上运行良好,但在 3G 上崩溃,因为 SIGABRT

当用户第一次启动应用程序时,他会弹出一个窗口并且必须保存图像。它适用于模拟器和4S。但是当我用我的 3G 启动它时,只要我选择了一张图片,它就会给我一个 SIGABRT 错误。我认为这是因为图片的大小太挑了,因此占用了所有的内存——但这很奇怪,因为我把它做得更小了。这是代码:

我在这一行得到 SIGABRT 错误 imageData = [NSKeyedArchiver archivedDataWithRootObject:yourUIImage];

我应该使用其他方法来调整图像大小吗?还是应该将其保存为本地文件并在每次应用程序启动时检索它?(如果它是可能的)

0 投票
2 回答
399 浏览

ios - NSCoding v/s Sqlite

我正在开发一个 iOS 应用程序,从 sqlite 数据库中获取 html 内容,并通过自定义的 Objective-c 对象将其加载到 webviews 中。

我愿意在这些自定义对象上实现 NSCoding 以避免从 sqlite 获取内容。

任何人都有一些经验,使用 NSCoding 比从 sqlite db 获取更有益吗?

提前致谢,

0 投票
1 回答
1676 浏览

ios - 使用 NSCoding 归档 UIImageView

我以前从未使用过 NSCoding,我对它应该如何实现感到非常困惑。

我当前的 iPad 应用程序有一个 UIImageView(称为“背景”),它是我的主视图控制器的一个属性。“背景”有一个 UIImage 的“图像”属性(显然)和用户添加的各种子视图。添加的子视图是我自己自定义的 UIImageView 子类。

我需要能够保存“背景” UIImageView 的状态,以便可以使用相同的图像和所有子视图在存档时恢复它。

我了解 UIImageView 符合 NSCoding 协议,但我不确定在哪里实现 encodeWithCoder 和 initWithCoder。我是否从我的主视图控制器调用这些?我是否需要为 UIImageView 创建一个类别以允许我覆盖这些方法?

我是否需要编写代码来归档我的“背景”UIImageView 及其子视图的每个属性?我在 SO 的其他地方读到 UIImage 不符合 NSCoding,因此需要子类化或添加类别才能存档 UIImageView。

我认为有一种简单的方法可以将包括其所有属性、子视图等的对象保存到磁盘。似乎需要做很多事情才能让我保存这个“背景”UIImageView 并在以后恢复它。我正在努力想象我需要做的一切。非常感谢任何指针!

0 投票
2 回答
208 浏览

objective-c - 在使用 decodeObjectForKey 时理解 retainCounts:

我有一个奇怪的情况,我希望有人能解释一下。我NSCoding在自定义对象中实现协议,并且在initWithCoder:. 我有这样的事情:

我有这个对象的许多其他属性,一些是数组、一些字符串和一些原语(双精度数、整数),并且我一直在这种方法中遇到内存泄漏。Instruments 告诉我泄漏发生在每个解码decodeObjectForKey:线上。当您在 10 多个对象的数组中泄漏每个自定义类中的每个解码对象时,内存开始增加。

但真正让我难过的是这段代码的输出:

是“3”!

哇,所有这些保留来自哪里?打败我。但我很想知道所有这些泄漏。谢谢!

0 投票
3 回答
5730 浏览

iphone - decodeObjectForKey: 总是返回 nil

我正在尝试将我的对象图保存到一个文件中,然后在以后重新加载它,但是 decodeObjectForKey: 总是为我指定的任何键返回 nil 。

创建了一个二进制文件,其中偶尔包含人类可读的文本,即titleTextColor,因此我认为归档过程正在运行。

我是否错过了 NSKeyedArchiver 和 NSKeyedUnarchiver 的工作原理?任何帮助,将不胜感激。

编辑:根据 DarkDust 的建议:

并创建一个新实例只是为了测试:

编辑 - 更新(需要将浮点数和整数编码为 NSNumbers)

0 投票
2 回答
466 浏览

objective-c - 如何继承 UIButton 以允许复制和编码以进行归档?

我有一个应用程序,我需要一直跟踪最后按下的按钮。所以我实现了这个方法:

然后,当按下任何按钮时,我会调用:

完美运行。但是现在我正在归档我的应用程序中的所有对象,当视图消失或关闭然后取消归档它并且 UIButton 不符合 NSCopying 或 NSCoding 时。我读过我可以继承 UIButton 并定义方法,但我被困在那里。

因此,当我的应用关闭或视图消失时,我想保存 lastButtonPressed。

我创建了一个名为 BIDPersistence 的新类来保存我的归档数据。在我的应用程序的视图控制器中,我有一个 saveData 方法来保存我的数据。我在下面显示的最后一行出现错误,因为 UIButton 不符合要求。

任何帮助表示赞赏。