ios – 通过watchConnectivity发送NSObject

ios – 通过watchConnectivity发送NSObject,第1张

概述我正在研究我们的应用程序的WatchOS 2版本,并坚持我只能发送一个带有“updateApplicationContext:(NSDictionary *)”函数的字符串. 我希望我可以使用一些变量将NSObject作为对象发送到此NSDictionary中.几天后,我仍然没有找到解决这个问题的方法.反正有没有通过函数发送NSObject? 如果没有办法发送NSObject,是否可以发送类似结构 我正在研究我们的应用程序的WatchOS 2版本,并坚持我只能发送一个带有“updateApplicationContext:(NSDictionary *)”函数的字符串.

我希望我可以使用一些变量将NSObject作为对象发送到此NSDictionary中.几天后,我仍然没有找到解决这个问题的方法.反正有没有通过函数发送NSObject?

如果没有办法发送NSObject,是否可以发送类似结构的东西?

我的代码如下:

-(voID)updateWatchData{    //Objective-C    if ([WCSession isSupported]) {        WCSession *session = [WCSession defaultSession];        session.delegate = self;        [session activateSession];        if(session.isPaired) {            //Objective-C            DLog("Sending watch data");            NSMutableArray *kalenderData = [[NSMutableArray alloc] init];            for (int i = 0; i < self.dataContainerVIEws.count; i++) {                DataContainerVIEw *container = self.dataContainerVIEws[i];                if(container.ListType == ListGPKalender){                    for(int j = 0; j < container.tableArray.count; j++){                        GrandPrix *gp = container.tableArray[j];                        WatchGrandPrix *watchGp = [[WatchGrandPrix alloc] init];                        watchGp.gpnaam = gp.gpnaam;                        [kalenderData addobject:watchGp];                    }                }            }            NSArray *keys = [NSArray arrayWithObjects:@"kalenderData",nil];            NSArray *objects = [NSArray arrayWithObjects:kalenderData,nil];            NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];            NSError *anyError;            if([[WCSession defaultSession] updateApplicationContext:dictionary error:&anyError]){                DLog("Data Send!");            }else{                DLog("Failed to send data with error: %@",anyError);            }        }    }}

而NSObject只是:

@interface WatchGrandPrix : NSObject@property(nonatomic,strong) Nsstring *gpnaam;@end

我得到的错误是

Failed to send data with error: Error Domain=WCErrorDomain Code=7010
“Payload contains unsupported type.”
UserInfo={NSLocalizedDescription=Payload contains unsupported type.,
NSLocalizedRecoverySuggestion=Only pass valID types.}

谢谢!

解决方法 您可以将对象转换为属性列表表示(基本上代替模型对象的数组,您有一个字典数组,其中每个字典是值的映射,其中键是变量的名称,值是pList表示值的兼容类型).

另一个带宽效率较低的选项是使您的对象符合NSSecureCoding并使用类似NSKeyedArchiver的东西将其转换为NSData并发送NSData数组.

总结

以上是内存溢出为你收集整理的ios – 通过watchConnectivity发送NSObject全部内容,希望文章能够帮你解决ios – 通过watchConnectivity发送NSObject所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1048235.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存