Mea*_*her 0 core-data ios watchkit
我有一个核心数据应用程序。就像是说一个新闻应用。每个条目都有名称,id,日期,发布者,详细信息等。主要的iOS应用可以包含很多News条目。我只想显示WatchOS应用程序的前三个新闻。由于获取新闻条目需要使用键盘,因此我无法从Watch端启动传输。共享数据的最佳策略是什么?我想过以下情况
使用WatchConnectivity transferFile发送核心数据文件
每当添加新闻时,在保存到CoreData之前,请先通过WatchConnectivity发送。
将数据保存到核心数据后,查询最后三个对象并将其发送。
您能帮我找到一种更好的将iOS应用与WatchOS应用同步的方法吗?谢谢。
我认为最好的方法是使用应用程序上下文进行后台传输。具有以下优点:
唯一的缺点是您必须序列化您的NSManagedObject。我不知道您的对象有多复杂,但是如果它们是您可以使用HyperSync或Groot之类的库
因此,这就是您随后将手机与应用同步的方式:
1.设置会话:
if WCSession.isSupported() {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
Run Code Online (Sandbox Code Playgroud)
在两个地方都可以做到这一点:在您的主应用程序和手表扩展中。如果您只是将数据从主应用程序发送到手表,则无需在主应用程序端设置委托。
2.实现委托方法:
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {
// deserialize the received data,
// store it in CoreData on your watch
// and update the UI
}
Run Code Online (Sandbox Code Playgroud)
3.发送数据:
let dataDict = latestThreeNewsObjects.serializeToDictionary() // However you achieve this ;-)
do {
try WCSession.defaultSession().updateApplicationContext(dataDict as! [String : AnyObject])
} catch {
print("Cannot send data to watch: \(error)")
}
Run Code Online (Sandbox Code Playgroud)
因此,每当您向主应用程序CoreData中添加新新闻项时,都获取最新的三个新闻项NSManagedObjects,将它们序列化为字典并更新您的应用程序上下文。通过这种方式,手表在启动时始终具有最新的3条新闻。当它已经处于活动状态时,新闻将立即更新。
还有一件事:在尝试将数据发送到手表之前,您应该始终检查用户是否已在手表上安装了该应用程序。WCSession具有以下属性:watchAppInstalled。如果未安装该应用程序,请不要浪费资源将数据发送到深渊...
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |