问题标签 [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 投票
6 回答
76904 浏览

ios - 为什么 NSUserDefaults 无法在 iOS 中保存 NSMutableDictionary?

我想将一个NSMutableDictionary对象保存在NSUserDefaults. 中的键类型NSMutableDictionaryNSString,值类型是NSArray,其中包含实现的对象列表NSCoding。每个文档,NSString并且NSArray两者都符合NSCoding.

我收到此错误:

[NSUserDefaults setObject: forKey:]: 尝试插入 NSCFDictionary 类的非属性值....

0 投票
2 回答
1749 浏览

iphone - UIWebView 包括。内容编码/解码

我的目标:在应用程序中断时继续网络会话(例如,读取的传入短信)。

方法 A: 我尝试​​将 UIWebView 的内容存储在 NSUserDefaults 中,如下所示:

然后像这样恢复它:

但这不包括内容。

方法 B: 我还尝试通过以下方式获取 UIWebView 的内容:

然后存储它,并再次检索它,然后尝试在 UIWebView 中设置它:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL

但 innerHTML javascript 并未返回全部内容。

有什么想法、建议等吗?

0 投票
1 回答
1154 浏览

ios - 以编程方式加载使用 NSCoding 创建的对象模型

应用程序的 1.0 版有一个数据模型,它使用 NSKeyed(Un)Archiver 类保存/加载,因为所有模型类都遵循 NSCoding 协议。假设存在以下层次结构:

假设有以这种方式存储的遗留文件,但需要加载到应用程序的 2.0 版本以实现向后兼容性,使用以下较新的数据模型:

显然,有些数据会丢失,需要填写。例如。需要为之前存在的每个“居民数量”创建一个基本的“居住者”对象。我正在寻找的是一种以编程方式加载先前数据模型的方法,特别是如果我只有一个类/层次结构列表,而不是 .m/.h 文件本身。

所以我想做的是(假设我有一个文件 Houses.data,它是使用 Houses 数组序列化的):

有任何想法吗?

0 投票
2 回答
5003 浏览

iphone - iPhone - 为什么文档说 UIImageView 符合 NSCoding?

理想情况下,一个符合 NSCoding 的类将使用 encodeWithCoder: 和 initWithCoder: (至少我直到最近才这么认为)按预期工作,而开发人员不必担心例程内部发生的事情(除非我对一个符合 NSCoding 的类的想法完全搞砸了!)

UIImageView 类是 NSCoding 兼容的。所以我不必担心如何使用 NSKeyedArchiver 和 NSKeyedUnarchiver 类对其进行序列化/反序列化。但是每次我尝试对 UIImageView 对象进行编码时,都会收到 UIImage 无法识别 encodeWithCoder: 方法的错误。

现在 UIImageView 在内部使用 UIImage 对象。但是编码不应该自己解决这个问题吗?

还是文档中指定的 NSCoding 合规性只是让用户知道他们可以实现 initWithCoder 和 encodeWithCoder 方法?

有人可以为我澄清一下吗!我彻底糊涂了!

0 投票
2 回答
1090 浏览

iphone - 使用 NSKeyedArchiver 保存/加载 2D C 数组

像这样的马洛克

用它。在保存之前像这样转换为 NSdata

加载到 NSdata 然后转换回int**

使用此代码,它是否保存了*int地址,然后当我加载数据时它不再指向正确的数据?或者我对 文档中描述的“字节顺序”有问题吗

如果是地址问题,我是否应该在保存转换*int为 NSData 时放置一个 for 循环,然后保存所有这些并**int使用另一个 for 循环/malloc 重新创建?

0 投票
1 回答
1200 浏览

overriding - 覆盖类变量,或者至少是objective-c / cocoa中的变量类型

我的困境如下:

我有一个 UIImage 的自定义子类(我添加了一些序列化方法,即 initWithCoder、encodeWithCoder),我想将我的自定义子类作为变量应用到 UIImageView,或者至少是 UIImageView 的子类。

如您所知,UIImageView 有一个名为“image”的变量,它的类型为 UIImage。我想用我的子类覆盖这个变量。

我的目标是让 UIimageView 响应 archivedDataWithRootObject 而不会崩溃,并将 encodeWithCoder 消息发送到变量图像。如果有更聪明的方法可以到达那里,我愿意接受建议。

谢谢!

[编辑]我认为一种可能的途径是通过某种类型的铸造......但是:

当我在第二行执行后将鼠标悬停在 mlImage 上时,我可以看到它是 MLImage 类型的。但是,即使使用强制转换,在第三行执行 mlImage 之后也会变成 UIImage。我需要做什么才能将图像类型更改为 MLImage?[/编辑]

0 投票
3 回答
3027 浏览

objective-c - CGPathRef 编码

是否可以对 CGPathRef 变量进行编码?我的意思是 CGPathRef 变量是否有类似 encodeObject:forKey 的方法?

0 投票
2 回答
258 浏览

iphone - 更长的密钥是否会使 NSKeyedArchiver 文件显着更长

当我encodeWithCoder:为 iPhone 应用程序填写目标 c 类时,如果我对所有变量使用长键而不是短键,是否会使存档文件变大?

例如,如果我使用这样的非常长的键:

它会使存档文件比我使用这样的东西更长:

假设我有大量的整数和布尔值。

0 投票
3 回答
4908 浏览

objective-c - 归档/取消归档导致 initForReadingWithData 无法理解的归档

我已经实现了保存applicationWillTerminate和加载applicationWillFinishLoading。有一个完整的对象树,都实现了NSCoding协议,我检查了我输入的类型。

其中一个类还存储NSMutableDataNSKeyedArchive,我怀疑这可能会偶尔破坏取消归档。奇怪的是,有时它有效,有时则无效。我怀疑其中的某些内容NSMutableData会破坏存档。

我在所有对象上使用 encodeObject,除了 bools 和 int 我使用正确的相应方法(encodeBool:forKey:encodeInt:forKey:

更清楚地说:代码确实有效,有时它能够重建一个相当完整的对象图,但并非总是如此。

我得到的错误信息是:

补充:失败的代码,它是NSMutableData10+ MB

当我删除 self.data 编码和解码时,它似乎总是有效。它也因较小的 self.data 而失败。似乎不是大小而是内容问题?

当我将 nsmutabledata 写入文件时尝试打开文件,正确的列表编辑器显示错误:

plutil 也给出了这个错误:

0 投票
1 回答
2409 浏览

objective-c - 编码一个 Objective-c 块?

是否可以使用 对 Objective-C 块进行编码NSKeyedArchiver

我不认为 Block 对象是NSCoding兼容的,因此[coder encodeObject:block forKey:@"block"]不起作用?

有任何想法吗?