小编Ada*_*fer的帖子

将 NSSecureUnarchiveFromDataTransformer 用于 Transformable 属性时崩溃

在 iOS 12 中,Apple 引入了NSSecureUnarchiveFromDataTransformerName用于 CoreData 模型实体的可转换属性。我曾经将 Transformer Name 字段保持为空,它隐式使用了NSKeyedUnarchiveFromDataTransformerName. 这个转换器现在已被弃用,将来保持该字段为空将意味着NSSecureUnarchiveFromDataTransformerName取而代之。

在 iOS 13 中,如果该字段为空,您现在会收到一个运行时警告,告诉您上述内容。我在任何地方都找不到关于此的任何文档,我得到的唯一参考是 WWDC 2018 核心数据最佳实践演讲,其中简要提到了我刚才所说的内容。

现在我有一个带有实体的模型,该实体直接将HTTPURLResponse对象存储在 Transformable 属性中。它符合NSSecureCoding,我在运行时检查supportsSecureCodingtrue

NSSecureUnarchiveFromDataTransformerNameTransformer Name 的设置崩溃并显示以下消息:

Object of class NSHTTPURLResponse is not among allowed top level class list (
    NSArray,
    NSDictionary,
    NSSet,
    NSString,
    NSNumber,
    NSDate,
    NSData,
    NSURL,
    NSUUID,
    NSNull
) with userInfo of (null)
Run Code Online (Sandbox Code Playgroud)

所以听起来 Transformable 属性只能是这些顶级对象。

我尝试对安全转换器进行子类化并allowedTopLevelClasses按照文档的建议覆盖该属性:

@available(iOS 12.0, *)
public class NSSecureUnarchiveHTTPURLResponseFromDataTransformer: NSSecureUnarchiveFromDataTransformer …
Run Code Online (Sandbox Code Playgroud)

core-data ios nssecurecoding ios13

10
推荐指数
1
解决办法
2498
查看次数

导入Swift Package Manager依赖项时出现“无此模块”错误

我正在运行Xcode 11 Beta4。我正在使用CocoaPods,并且想将Swift Package Manager的依赖项之一用作静态库而不是框架。在使用Xcode 11创建的新项目中,可以成功导入依赖项,但是在我现有的CocoaPods工作区中则不能。

我认为这可能是相关的,但我也在Xcode中收到此链接警告:

directory not found for option '-L/Users/username/Library/Developer/Xcode/DerivedData/App-axanznliwntexmdfdskitsxlfypz/Build/Products/Release-iphoneos
Run Code Online (Sandbox Code Playgroud)

在发出警告后,我去查看目录是否存在,并且确实存在。除了CocoaPods的存在之外,新创建的项目与我的旧项目之间没有任何有意义的区别。

将不胜感激任何指针。

cocoapods swift-package-manager xcode11

9
推荐指数
6
解决办法
1714
查看次数