问题标签 [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.
objective-c - Objective-C:如何让它为 NSCoding 保存两个文件而不是一个文件?
我的代码在这里:
如果我使用指定的 fileKey(即:“buttons”)保存一个文件一次,它会起作用。但是如果我想使用指定的 fileKey(即:“clocks”)将另一个文件保存到磁盘,它会覆盖“buttons”使用“时钟”,因此“无法再次访问按钮..
如何解决这个困境?我相信这应该是我“saveDataToDisk”(存档)的方式,我应该将一堆文件写入磁盘,而不是用最新的文件替换每个文件。
ios - 存储在序列化视图中的子类 UILabel 不存储自定义变量
所以,我有一个正在序列化并存储在文件中的视图。在该视图中,有n个子类 UILabel,唯一的区别是活动属性。我在 UILabel 子类中有 initwithcoder 和 encodewithcoder,但我仍然无法在标签中获取自定义变量。我已经包含了我的子类的方法和以下内容。任何帮助表示赞赏。
自定义UILabel:
因为我只是取消归档包含标签的视图,所以我假设 ios 不会取消归档自定义标签?
谢谢
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
。
ios - NSCoding NSKeyedUnarchiver unarchiveObjectWithFile:返回 null
我正在尝试使用 NSCoding 从我的应用程序中保存一些值。我能够保存该值但无法检索它。
这是我声明协议的地方:
这是我遵守协议的地方:
和这里:
这里是我调用归档和取消归档方法的地方:
以下是这些方法的主体及其 NSLog 内容:
这是解压缩代码及其 NSLog 内容:
我无法取消归档内容,我错过了什么?我只是专注于我的编码器/解码器方法中最简单的值,只是为了测试它,但我什至无法让字符串值工作。
谢谢
iphone - 应用程序在 4S 上运行良好,但在 3G 上崩溃,因为 SIGABRT
当用户第一次启动应用程序时,他会弹出一个窗口并且必须保存图像。它适用于模拟器和4S。但是当我用我的 3G 启动它时,只要我选择了一张图片,它就会给我一个 SIGABRT 错误。我认为这是因为图片的大小太挑了,因此占用了所有的内存——但这很奇怪,因为我把它做得更小了。这是代码:
我在这一行得到 SIGABRT 错误 imageData = [NSKeyedArchiver archivedDataWithRootObject:yourUIImage];
我应该使用其他方法来调整图像大小吗?还是应该将其保存为本地文件并在每次应用程序启动时检索它?(如果它是可能的)
ios - NSCoding v/s Sqlite
我正在开发一个 iOS 应用程序,从 sqlite 数据库中获取 html 内容,并通过自定义的 Objective-c 对象将其加载到 webviews 中。
我愿意在这些自定义对象上实现 NSCoding 以避免从 sqlite 获取内容。
任何人都有一些经验,使用 NSCoding 比从 sqlite db 获取更有益吗?
提前致谢,
ios - 使用 NSCoding 归档 UIImageView
我以前从未使用过 NSCoding,我对它应该如何实现感到非常困惑。
我当前的 iPad 应用程序有一个 UIImageView(称为“背景”),它是我的主视图控制器的一个属性。“背景”有一个 UIImage 的“图像”属性(显然)和用户添加的各种子视图。添加的子视图是我自己自定义的 UIImageView 子类。
我需要能够保存“背景” UIImageView 的状态,以便可以使用相同的图像和所有子视图在存档时恢复它。
我了解 UIImageView 符合 NSCoding 协议,但我不确定在哪里实现 encodeWithCoder 和 initWithCoder。我是否从我的主视图控制器调用这些?我是否需要为 UIImageView 创建一个类别以允许我覆盖这些方法?
我是否需要编写代码来归档我的“背景”UIImageView 及其子视图的每个属性?我在 SO 的其他地方读到 UIImage 不符合 NSCoding,因此需要子类化或添加类别才能存档 UIImageView。
我认为有一种简单的方法可以将包括其所有属性、子视图等的对象保存到磁盘。似乎需要做很多事情才能让我保存这个“背景”UIImageView 并在以后恢复它。我正在努力想象我需要做的一切。非常感谢任何指针!
objective-c - 在使用 decodeObjectForKey 时理解 retainCounts:
我有一个奇怪的情况,我希望有人能解释一下。我NSCoding
在自定义对象中实现协议,并且在initWithCoder:
. 我有这样的事情:
我有这个对象的许多其他属性,一些是数组、一些字符串和一些原语(双精度数、整数),并且我一直在这种方法中遇到内存泄漏。Instruments 告诉我泄漏发生在每个解码decodeObjectForKey:
线上。当您在 10 多个对象的数组中泄漏每个自定义类中的每个解码对象时,内存开始增加。
但真正让我难过的是这段代码的输出:
是“3”!
哇,所有这些保留来自哪里?打败我。但我很想知道所有这些泄漏。谢谢!
iphone - decodeObjectForKey: 总是返回 nil
我正在尝试将我的对象图保存到一个文件中,然后在以后重新加载它,但是 decodeObjectForKey: 总是为我指定的任何键返回 nil 。
创建了一个二进制文件,其中偶尔包含人类可读的文本,即titleTextColor,因此我认为归档过程正在运行。
我是否错过了 NSKeyedArchiver 和 NSKeyedUnarchiver 的工作原理?任何帮助,将不胜感激。
编辑:根据 DarkDust 的建议:
并创建一个新实例只是为了测试:
编辑 - 更新(需要将浮点数和整数编码为 NSNumbers)
objective-c - 如何继承 UIButton 以允许复制和编码以进行归档?
我有一个应用程序,我需要一直跟踪最后按下的按钮。所以我实现了这个方法:
然后,当按下任何按钮时,我会调用:
完美运行。但是现在我正在归档我的应用程序中的所有对象,当视图消失或关闭然后取消归档它并且 UIButton 不符合 NSCopying 或 NSCoding 时。我读过我可以继承 UIButton 并定义方法,但我被困在那里。
因此,当我的应用关闭或视图消失时,我想保存 lastButtonPressed。
我创建了一个名为 BIDPersistence 的新类来保存我的归档数据。在我的应用程序的视图控制器中,我有一个 saveData 方法来保存我的数据。我在下面显示的最后一行出现错误,因为 UIButton 不符合要求。
任何帮助表示赞赏。