如何从 WatchKit Extension 调用 CoreData 代理框架?
How do I call the CoreData proxy framework from WatchKit Extension?
我已经在 Xcode 中设置了一个 iPhone 应用程序并添加了一个 Cocoa-Touch iOS 框架来按照苹果的建议处理数据。
基本上,我已经完成了本教程中的所有内容:
http://www.telerik.com/blogs/send-data-to-apple-watch-with-core-data-and-telerik-ui-for-ios-in-swift
在 iPhone 方面,它可以很好地调用函数,但是如果我尝试调用完全相同的函数,我会收到这个可怕的错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
在逐行对代码进行一些注释和 运行 之后,我确定这是有问题的行(两个数据处理函数中的同一行):
var entity = NSEntityDescription.entityForName("ChartDataEntity", inManagedObjectContext: self.managedObjectContext!)
感谢任何帮助或想法!
错误显示 unexpectedly found nil while unwrapping an Optional value
。您的代码行在使用 self.managedObjectContext!
时恰好解包了一个可选值,所以这就是问题所在。出于某种原因,您正在尝试使用 self.managedObjectContext
但您尚未将其初始化为具有任何值。在使用它之前,您需要设置上下文和其余的 Core Data 堆栈。
在该教程中,如果 lazy var managedObjectContext: NSManagedObjectContext?
无法创建持久性存储协调器,则它可能 return 为零。如果它不能创建持久存储文件,那反过来可能是零。在解决问题之前,您需要弄清楚为什么 self.managedObjectContext
为 nil。
我明白问题出在哪里了。我已经将框架中的文件添加到 iphone 应用程序的目标以及 watchkit 扩展,Apple 建议无论如何都不允许这样做,如果你尝试这样做,他们会阻止你的应用程序:https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html
无论如何,如果您遇到这种情况,您需要做的是取消勾选目标(数据模型和 swift 文件):
从这里开始:
所以只有你的框架被勾选为目标。现在我的手表应用程序可以与 CoreData 一起使用了!那是痛苦的几天...
我已经在 Xcode 中设置了一个 iPhone 应用程序并添加了一个 Cocoa-Touch iOS 框架来按照苹果的建议处理数据。
基本上,我已经完成了本教程中的所有内容:
http://www.telerik.com/blogs/send-data-to-apple-watch-with-core-data-and-telerik-ui-for-ios-in-swift
在 iPhone 方面,它可以很好地调用函数,但是如果我尝试调用完全相同的函数,我会收到这个可怕的错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
在逐行对代码进行一些注释和 运行 之后,我确定这是有问题的行(两个数据处理函数中的同一行):
var entity = NSEntityDescription.entityForName("ChartDataEntity", inManagedObjectContext: self.managedObjectContext!)
感谢任何帮助或想法!
错误显示 unexpectedly found nil while unwrapping an Optional value
。您的代码行在使用 self.managedObjectContext!
时恰好解包了一个可选值,所以这就是问题所在。出于某种原因,您正在尝试使用 self.managedObjectContext
但您尚未将其初始化为具有任何值。在使用它之前,您需要设置上下文和其余的 Core Data 堆栈。
在该教程中,如果 lazy var managedObjectContext: NSManagedObjectContext?
无法创建持久性存储协调器,则它可能 return 为零。如果它不能创建持久存储文件,那反过来可能是零。在解决问题之前,您需要弄清楚为什么 self.managedObjectContext
为 nil。
我明白问题出在哪里了。我已经将框架中的文件添加到 iphone 应用程序的目标以及 watchkit 扩展,Apple 建议无论如何都不允许这样做,如果你尝试这样做,他们会阻止你的应用程序:https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html
无论如何,如果您遇到这种情况,您需要做的是取消勾选目标(数据模型和 swift 文件):
从这里开始:
所以只有你的框架被勾选为目标。现在我的手表应用程序可以与 CoreData 一起使用了!那是痛苦的几天...