小编Mik*_*ane的帖子

如何在iOS 12中替换NSKeyedArchiver的初始化程序init(forWritingWith :)来编码CKRecord的元数据

在iOS 12中,不推荐使用NSKeyedArchiver的初始化程序init(forWritingWith :).Xcode 10建议用新的初始化程序init(需要SecureCoding :)替换它.问题是此初始化程序仅设置NSCoder对象的requiresSecureCoding属性的值,但它不设置将包含编码数据的NSMutableData对象.以下是Apple提出的编码CKRecord元数据(CloudKit记录)的原始代码:

let data = NSMutableData()
let coder = NSKeyedArchiver.init(forWritingWith: data)
coder.requiresSecureCoding = true
record.encodeSystemFields(with: coder)
coder.finishEncoding()
Run Code Online (Sandbox Code Playgroud)

CKRecord类的encodeSystemFields方法需要NSKeyedArchiver对象(NSCoder子类),并且编码数据存储在与此对象关联的NSMutableData对象中.如果我用init(requiresSecureCoding :)初始化程序替换init(forWritingWith :)初始化程序,我得到一个NSKeyedArchiver对象,但是这个对象没有与任何NSMutableData对象关联,因此我没有得到记录的元数据.我不确定如何完成代码以将NSKeyedArchiver对象生成的数据转换为NSMutableData对象.

nskeyedarchiver nscoder

6
推荐指数
1
解决办法
3057
查看次数

如何重置或重启ARCore会话?

我需要reset/ restartARCore会议。在ARKit中,我只需要创建一个新配置并执行该RunWithConfigAndOptions方法,但是在ARCore中找不到有关如何执行此操作的任何信息。以下是我在Unity for ARKit中使用的代码:

ARKitWorldTrackingSessionConfiguration config = new ARKitWorldTrackingSessionConfiguration();
config.planeDetection = UnityARPlaneDetection.Horizontal;
config.alignment = UnityARAlignment.UnityARAlignmentGravity;
config.enableLightEstimation = true;  

UnityARSessionNativeInterface.GetARSessionNativeInterface().RunWithConfigAndOptions(config, 
                                                                                    UnityARSessionRunOption.ARSessionRunOptionRemoveExistingAnchors | 
                                                                                    UnityARSessionRunOption.ARSessionRunOptionResetTracking);
Run Code Online (Sandbox Code Playgroud)

我在Unity中工作,但是我想任何信息都将有用。

谢谢

java unity-game-engine augmented-reality kotlin arcore

5
推荐指数
1
解决办法
1412
查看次数

Foundation/SwiftData 中的 #Predicate 宏是否支持不区分大小写的搜索?

我正在测试新的 SwifData 框架并使用新的 #Predicate 宏,并意识到它不支持不区分大小写的搜索。该宏不能与 lowercased() 方法或 localizedLowercase 属性一起使用,因此似乎无法像我们过去使用 NSPredicate 和 [c] 属性那样创建不区分大小写的谓词。

   var predicate = #Predicate<Book> {
  $0.title.localized().contains(search) }
Run Code Online (Sandbox Code Playgroud)

错误:此谓词不支持 lowercased() 函数(来自宏“Predicate”)

我想知道是否有任何解决办法。谢谢

predicate swift swift-data

2
推荐指数
1
解决办法
818
查看次数