在我的iOS应用程序中,我使用Core Data存储数据和获取请求以创建NSManagedObject
s数组以显示在中UITableView
。
在Watch OS上,我检查是否WCSession
支持并激活会话,然后从watchOS扩展向iOS应用发送消息。
当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)
}
}
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"])
}
如何通过Watch OS Extension共享对象数组?由于您使用的是WatchConnectivity
框架,因此请使用sendMessage
方法从iPhone发送对象数组,并在您的FavoritesInterfaceController
实现func session(session: WCSession, didReceiveMessage
方法中发送该对象数组以获取响应,也可以在Replyhandler中获取该数组。
如果用户在Watch OS上添加/编辑/删除数组中的对象,我们如何更新iPhone上的数据?
将objectId以及方法的新更改sendMessage
从手表发送到电话,通过电话接收后,数据库中的更改会将其保存并在您的ReplyHandler中发送更新的值,以便您的手表内容将相应地更新。
iOS应用程序也嵌入在UITabBarController内,因此与哪个视图控制器通信是否重要?
您需要与之通信的viewController,或者负责进行更改的viewController应该还活着。如果有多个ViewController正在监听,WCSessionDelegates
则当您从监视发送任何消息时,所有实时控制器都会收到该消息。您应该identifier
在sendMessage
字典中包含某种形式,以便您知道要执行的操作。就像您要发送给delete
对象一样,watch
发送消息时identifier
将包含该消息,delete
以便在接收时可以检查该identifier
值并执行delete
操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句