我一直在 Xcode 中开发一个在模拟器上运行良好的应用程序。我想在我的设备上尝试一下。但是,每次尝试在我的设备上安装/运行它时,我都会遇到一个令人沮丧的模糊问题。安装失败,我收到的消息包括:
无法安装“AppName”域:com.apple.dtdevicekit 代码:-402620415 -- 应用程序安装失败域:com.apple.dtdevicekit 代码:-402620415 失败原因:发生未知错误。
目标部署设置为 iOS 13.2,设备是运行 13.3 的 iPhone X,Xcode 是运行在 MacOS 10.15.1 上的 11.3 版。
我之前在我的设备上测试过其他应用程序,但自从更新到 iOS 13 和 macOS Catalina 和 Xcode 11 之后就没有了。非常感谢任何想法/指导!
从 iOS 13 开始,Apple 建议使用附加到场景的 NSUserActivity 对象来存储用户状态,因此我一直在尝试 a) 更好地理解 NSUserActivity 的工作原理和 b) 在我自己的代码中实现它。在阅读 Apple 的文档时,我遇到了这段代码:
class var activityType: String {
let activityType = ""
// Load our activity type from our Info.plist.
if let activityTypes = Bundle.main.infoDictionary?["NSUserActivityTypes"] {
if let activityArray = activityTypes as? [String] {
return activityArray[0]
}
}
return activityType
}
Run Code Online (Sandbox Code Playgroud)
我明白什么该做(它看起来在名为“NSUserActivityTypes”的条目的Info.plist文件,如果存在的话它会尝试获取activityTypes的关联数组,然后数组中读取的第一个项目),但什么我不明白这是为什么。特别是,我不明白为什么我们只读取 activityArray 中的第一项。在这种情况下,我们知道第一个(也是唯一的项目)是“com.apple.apple-samplecode.StateRestoration.activity”,因为我们必须手动创建该 plist 条目。但是我不明白为什么我们要硬编码查看数组的第一项以获取活动类型,因为如果我们知道我们将只返回字符串“com.apple.apple-samplecode”。 StateRestoration.activity",
class var activityType: String {
return "com.apple.apple-samplecode.StateRestoration.activity"
}
Run Code Online (Sandbox Code Playgroud)
我以前从未使用过 NSUserActivity,我知道它可以(通常是?)用于状态保存/恢复以外的其他事情,因此您的应用程序可以支持许多不同类型的用户活动(切换,Siri 集成) , 等等。)。所以我会假设我们希望我们的代码尽可能健壮,而不是对我们可能收到的 NSUserActivity 对象的种类做任何假设。 …