Ril*_*Dev 11 core-data ios swift watchkit watchconnectivity
在我的iOS应用程序中,我使用Core Data来存储数据和获取请求以创建NSManagedObject要在a中显示的s 数组UITableView.
在Watch OS上,我检查是否WCSession支持并激活会话,然后从iOS应用程序向watchOS扩展发送消息.
当iOS应用程序从watchOS收到消息时,它应该将数组发送Objects到watchOS扩展中以显示数据WKInterfaceTable,但我不确定如何执行此操作.最终我想要实现的是;
如何Objects与watchOS扩展共享数组?
如果用户在Watch上的数组中添加/编辑/删除对象,我们如何更新iPhone上的数据?
此外,iOS应用程序嵌入在一个内容中,UITabBarController因此与哪个视图控制器进行通信也很重要?
观看OS FavouritesInterfaceController
var session : WCSession!
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
//Check if session is supported and Activate
if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
}
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Interface Objects
//Send Message
sendmessagetoiphone()
}
func sendMessageToIphone() {
if(WCSession.isSupported()){
session.sendMessage(["b":"goodBye"], replyHandler: nil, errorHandler: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
IOS应用程序:FavouritesViewController
var objects = [Objects]()
func loadData() {
let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
let request = NSFetchRequest(entityName: "Objects")
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: true)]
do {
try
self.objects = moc.executeFetchRequest(request) as! [Objects]
// success ...
} catch {
// failure
print("Fetch failed")
}
}
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
//handle received message
let value = message["Value"] as? String
dispatch_async(dispatch_get_main_queue()) {
self.messageLabel.text = value
}
//send a reply
replyHandler(["Value":"Hello Watch"])
}
Run Code Online (Sandbox Code Playgroud)
如何与Watch OS扩展共享对象数组?
由于您正在使用WatchConnectivity框架,因此使用sendMessage方法从您的iPhone发送对象数组,并在您的FavoritesInterfaceController 工具中发送func session(session: WCSession, didReceiveMessage 方法以获取响应,或者您可以在replyhandler中获取数组.
如果用户在Watch OS上添加/编辑/删除数组中的对象,我们如何更新iPhone上的数据?
发送objectId沿着方法中的新更改sendMessage从手表到手机,在手机上接收后,数据库中的更改将保存并在replyHandler中发送更新的值,以便相应地更新手表内容.
此外,iOS应用程序嵌入在UITabBarController中,因此与哪个视图控制器进行通信是否重要?
您希望与之通信的viewController或负责进行更改的那个应该是活着的.如果多个ViewControllers正在侦听,WCSessionDelegates那么当您从watch发送任何消息时,所有实时控制器都将收到该消息.您应该identifier在sendMessage字典中包含某种类型,以便了解要执行的操作.就像你想要delete一个对象一样,当watch发送一条消息时,identifier它将包含 delete在接收时你可以检查identifier值并执行delete操作.
| 归档时间: |
|
| 查看次数: |
1935 次 |
| 最近记录: |