[英]How to use/import the NSObject class file in watchExtention?
您不能在Apple Watch擴展中使用UIApplicationDelegate
類,因為其在Apple-Watch Extension中具有有限的API訪問權限。
有兩種方法可以在appleWatch中獲取核心數據
第一種方式:
有很多博客逐步展示了如何在Watch中獲取核心數據
第二種方式:
現在的問題是,我們如何從CoreData
獲取數據並將其顯示在手表上?
好吧,為此,您需要通過WCSession
與iOS應用WCSession
並通過WCSession
向iOS應用發送消息,並在iOS中獲取數據並對此消息請求進行回復。
請按照以下步驟完成任務:
第1步:
通過WCSession
將Apple Watch與iOS WCSession
- (void)willActivate {
// This method is called when watch view controller is about to be visible to user
[super willActivate];
if ([WCSession isSupported]) {
self.session = [WCSession defaultSession];
self.session.delegate = self;
[self.session activateSession];
[self.session sendMessage:@{@"GetCoreData":@"YES"} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
//Get Reply Message along with data and use this data in Apple watch
} errorHandler:^(NSError * _Nonnull error) {
//Handle error
}];
}
}
#pragma mark -- WCSessionDelegate --
- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *, id> *)message replyHandler:(void(^)(NSDictionary<NSString *, id> *replyMessage))replyHandler{
}
- (void)session:(WCSession *)session activationDidCompleteWithState:(WCSessionActivationState)activationState error:(nullable NSError *)error{
}
在replyHandler
您將獲取數據。
步驟2:通過iOS設備獲得連接以從Apple Watch接收消息。
if ([WCSession isSupported]) {
_session=[WCSession defaultSession];
_session.delegate=self;
[_session activateSession];
}
建立連接,並在需要從數據庫獲取數據的相應類中添加接收者委托方法。
- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary<NSString *,id> *)message replyHandler:(nonnull void (^)(NSDictionary<NSString *,id> * __nonnull))replyHandler {
if ([[message objectForKey:@"OpeniOS"] isEqualToString:@"YES"]) {
// Fetch your data from DB.
// After successfully fetching data reply back to Apple watch by reply Block
replyHandler(<your_data>);
}
}
基於此,您將把CodeData放入Apple Watch。
希望這可以幫助您了解流程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.