问题标签 [nssecurecoding]
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 - 何时使用 NSSecureCoding
我正在了解NSSecureCoding
Apple 在 iOS 6 中引入的协议。
据我目前的理解,每当一个类对自身的实例进行编码/解码时,都应该使用它,以防止替换攻击。
我想知道在其他情况下使用它是否合适。
具体来说,如果一个类NSCoding
通过编码/解码其实例变量而不是其自身的整个实例来遵守,那么它仍然是可取的实现NSSecureCoding
吗?
编辑
假设我有一个实现NSCoding
如下的类
并假设不涉及 XPC。此类的实例将存档在存储在磁盘上的 plist 中。
安全方面,使用-decodeObjectOfClass:forKey:
与 相比
有什么好处-decodeObjectForKey:
吗?
objective-c - 采用不透明类型的 NSSecureCoding
我有一个需要采用NSSecureCoding
跨 XPC 连接进行传输的 Objective-C 类。该类有几个不透明类型的属性(dispatch_queue_t
和dispatch_group_t
)。
-initWithCoder:
在这种情况下,我将如何实施-encodeWithCoder:
?文档说这些是类似对象的结构,所以我假设在编码/解码时需要将它们转换为原始字节/从原始字节转换?如果是这种情况,我不确定应该使用哪些方法来做到这一点。另一种选择是完全避免对它们进行编码并在内部重新创建它们-initWithCoder:
。
ios - 通过 NSSecureCoding 解码 NSArray 时的奇怪行为
我整个下午都在用头撞墙,试图弄清楚为什么这个类的解码失败了。该类有一个属性,它是 Foo 对象的 NSArray。Foo 符合 NSSecureCoding,我已经成功地自行编码和解码了该类。我在 initWithCoder 中遇到错误:表示解码类 Foo 失败。通过一些实验,我发现我需要将 [Foo class] 添加到 initWithCoder: 以使其工作。也许这会帮助遇到同样问题的其他人。我的问题是,为什么这是必要的?我在苹果的文档中没有发现有必要这样做的建议。
objective-c - 如何使用 NSSecureCoding 来保证集合类的内容?
我有一个 class 的对象,SGBContainer
它有一个名为的数组objects
,其中包含 class 的对象SGBObject
。目前,它们都实现了 NSCoding,但没有实现 NSSecureCoding。-initWithCoder:
forSGBContainer
看起来像这样:
我想改用 NSSecureCoding,据我所知,这意味着将上面的内容更改为:
...这并没有太大的改进,因为无论它们的类如何,数组的内容都将被实例化。如何确保数组只包含类对象SGBObject
而不实例化它们?
objective-c - 自定义类集合的 NSSecureCoding 问题
我在采用 NSSecureCoding 时遇到了麻烦。我对包含我的自定义类的对象的数组进行编码,该类NSSecureCoding
正确采用。当我解码它并传递类NSArray
(这是我编码的对象的类)时,它会引发异常。但是,当对字符串数组执行完全相同的操作时,它可以正常工作。我看不出我的班级和 NSString 有什么区别。
ios - 使用 NSSecureCoding 强制类型
我决定使用NSSecureCoding
over NSCoding
,但我无法让它工作。
我希望以下代码会失败,因为我正在编码一个NSString
但试图解码一个NSNumber
. 但是,该对象被初始化而不会引发异常。
这是我用来测试上面代码片段的代码:
我是否遗漏了一些完全明显的东西,或者为什么在解码过程中没有抛出异常?
ios - Swift 中的 NSSecureCoding (Facebook SDK)
我正在尝试将一段 Objective-C 代码翻译成 Swift 代码。
目标-C:
我将这段代码翻译成这样:
这给了我一个错误:类型“CacheItem”不符合协议“NSSecureCoding”
我在这里想念什么?
提前致谢!
objective-c - 如何将 NSSecureCoding 与 id 对象一起使用
我正在创建一个链表并使用容器对对象、下一个和上一个属性进行分组。像 Foundation 集合一样,我希望它实现NSSecureCoding
. 这是声明:
在实现该- initWithCoder:
方法时,我不知道该对象使用哪个类:
我应该-decodeObjectForKey:
改用吗?它仍然是安全编码吗?
ios - 是否可以解码包含未知对象的 NSKeyedArchived 集合
我有一组具有不同类 A、B 和 C 的对象(都共享一个共同的超类):
该集合通过 NSCoding 归档和取消归档。 如果其中一个类已从项目中删除,是否有办法部分取消归档此集合?
当遇到无法解码的对象时,它似乎decodeObjectForKey:
失败并返回一个对象。nil
有没有办法只获取能够解码的内容?我理解为什么这种行为对对象有意义,但对集合没有意义。
ios - 如何在 Swift 3 中使用 NSSecureCoding 解码字符串?
我目前正在尝试 iOS 10 Beta 并决定将我的 Swift 代码转换为 Swift 3。到目前为止,我能够使用安全地解码字符串
转换为 Swift 3 后,Xcode 给我以下错误:
正如我所提到的,我正在使用 NSSecureCoding,所以很遗憾decodeObject(forKey: String)
不会这样做。这是一个测试错误吗?我错过了什么?