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

0 投票
0 回答
101 浏览

swift - NSTextAttachment 子类不支持安全编码,因为它覆盖了 -initWithCoder: 并且不覆盖 +supportsSecureCoding

我正在尝试将带有 textAttachments 的 NSAttributedString 保存到核心数据。

为此,我需要将其转换核心数据不再接受NSKeyedUnarchiver

转换器要求所有被转换的东西都符合NSSecureCoding.

这工作正常,但我在添加附件时使用 NSTextAttachment 的自定义子类:

这会产生以下错误:

无法读取数据,因为它的格式不正确。, ["NSUnderlyingError": Error Domain=NSCocoaErrorDomain Code=4864 "类 'Noah.ImageAttachment' 有一个支持安全编码的超类,但是 'Noah.ImageAttachment '覆盖 -initWithCoder: 并且不覆盖 +supportsSecureCoding。该类必须实现 +supportsSecureCoding 并返回 YES 以验证其 -initWithCoder: 的实现是否符合安全编码。UserInfo={NSDebugDescription=类 'Noah.ImageAttachment' 有一个支持安全编码的超类,但 'Noah.ImageAttachment' 覆盖 -initWithCoder: 并且不覆盖 +supportsSecureCoding。该类必须实现 +supportsSecureCoding 并返回 YES 以验证其 -initWithCoder: 的实现是否符合安全编码。}]

我尝试按照指示添加

然而,这给出了一个错误initWithCoder

线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7ffee12f7ffc)

谁能帮我修复initWithCoder

0 投票
1 回答
1181 浏览

nscoding - NSSecureCoding 为正确保存的对象返回 nil

我使用的是 macOS 10.15 (bigSUr)、XCode 12、objective-c 而不是 ios。

我有基于文档的应用程序。它有一个简单的对象“SHGlobalAppData”(NSObject),其中包含自定义类“SHSetupDataModel”(NSObject)的属性对象。

加载时,initWithCoder 为保存的值返回 nil。为什么?

这是实现:

我使用 NSSecureCoding,因此 SHSetupDataModel 和 SHGlobalAppData 都包含了适当的类方法

使用安全编码在 NSDocument 中完成保存

储蓄是如何进行的

说到保存,这是 SHGlobalAppData 的代码

上述节省顺利进行。测试很好。

加载是如何完成的

现在在加载保存的文件时,会调用以下 NSDocument 方法:

这会调用 SHGlobalAppData 形式的 initWithCoder 方法 - 我得到一个 nil 结果

任何人都可以请帮助我为什么这是返回零?或者引导我进行更有效的调试?

0 投票
1 回答
94 浏览

objective-c - 为什么 NSNumber(s) 的 NSArray 无法解码?

我有一个符合NSSecureCoding. 我正在尝试对其数据进行编码,将其写入文件并对其进行解码。该类包含一个数组,我在编码之前int将其转换为NSArray填充元素。NSNumber当我解码数组时,decodeObjectForKey返回nil. 此外,当我将编码数组写入文件时,plist 看起来不正确。例如,它的结构中没有“key_for_ns_array”键。

这是我的代码的简化版本:

如果您对整个 int 数组到 ns 数组的转换感到好奇……那是因为我更喜欢用 C++ 编写。我对objective-c不是很有经验,所以我只在需要弥合我的游戏和iOS之间的差距时才写它。在这种情况下, s_my_data 是两者之间共享的类型。

0 投票
1 回答
100 浏览

nskeyedarchiver - NSSecureCoding:将 UIView 写入磁盘

是否可以使用 NSSecureCoding 将 UIView 写入磁盘。下面的代码会导致错误。

错误:无法写入数据,因为它的格式不正确。

我们还尝试了以下方法:

错误:此解码器将仅解码采用 NSSecureCoding 的类。'UIView' 类不采用它。

0 投票
2 回答
108 浏览

ios - 使用 NSTextAttachment 时使用 NSKeyedUnarchiver 在 iOS13 上取消归档 NSAttributedString 时出错

我存档了一个NSAttributedString,其中包含NSTextAttachment在 iOS14 上的图像,并注意到在 iOS13 上取消存档失败。在 iOS14 上,解压成功。

记录的错误是这样的:

有没有办法让它发挥作用,还是我注定要在这里?

这是将图像插入NSMutableAttributedStringusing的方式NSTextAttachment

这是归档行:

这是取消归档的行,它返回一个NSError实例:

NSData在 iOS14 上创建实例,将其存储到文件中并在 iOS13 中读取。这是它失败的时候。

0 投票
1 回答
58 浏览

swift - Swift NSSecureCoding 在展开时意外发现 nil

我在 CoreData 中存储了一个可转换对象,并试图使其符合 NSSecureCoding 标准,但是当我尝试解码时,在展开可选值时,我一直意外发现 nil

在 XCDataModel 中,我将属性设置为可转换并使用自定义类 AssignedExerciseObjects,我还将转换器设置为 AssignedExerciseObjectsValueTransformer

我还在我的 CoreData 堆栈中注册了转换器

这是我的变压器的副本

这是我的自定义课程的副本

这就是它给我错误的地方

我对 swift 还很陌生,但我一生都无法弄清楚为什么它返回 nil 值?

创建记录时,一切似乎都可以正常工作,但是当我尝试在表格中显示记录时,出现错误

任何帮助是极大的赞赏

问候

杰米

0 投票
0 回答
87 浏览

swift - SwiftUI:在 macOS 12 Monterey 上更改了粘贴板拖动?

我正在尝试在 SwiftUI 中执行基本的拖放操作到 NSTextView,但在 macOS 12 beta 中发生了一些变化,虽然此代码在 macOS 11 上运行良好,但它不再适用:

在 macOS 12 beta 上,调用 pboard.readObjects(...) 时,尝试将项目拖入 NSTextView 时出现此错误:

我注意到既不是supportsSecureCoding也不encode(with aCoder: NSCoder)是 macOS 12,而是在 macOS 11 上。

macOS 12 中是否有关于 NSCoding 或 NSSecureCoding 的任何更改,或者这只是一个错误?

0 投票
0 回答
20 浏览

ios - 如何在 NSSecureCoding 中使用 CVImageBuffer 属性?

我想发布CVImageBuffer到以下Apple API

这是我的代码:

当我调用以下代码时:

我崩溃并显示以下消息:

0 投票
0 回答
17 浏览

nsobject - NSKeyedUnarchiver _warnAboutNSObjectInAllowedClasses 错误日志在 iOS 控制台日志错误

  1. 在模拟器或真实设备上运行我的 iOS 应用程序
  2. 在 MAC 中打开 Console.app
  3. 强制退出并重新启动应用程序
  4. 检查日志

我看到这个日志显示为“故障”,但我不知道它来自哪里,我也找不到来自 Apple 的任何信息。有没有人见过这个错误?我应该从哪里开始调试它?它甚至意味着什么?请大家帮忙谢谢!!!

*** -[NSKeyedUnarchiver _warnAboutNSObjectInAllowedClasses]: NSSecureCoding allowed classes list contains [NSObject class], which bypasses security by allowing any Objective-C class to be implicitly decoded. Consider reducing the scope of allowed classes during decoding by listing only the classes you expect to decode, or a more specific base class than NSObject. This will be disallowed in the future.