Ios NSData到NSArray
我已将JSON数据的Ios NSData到NSArray,ios,objective-c,watchkit,apple-watch,Ios,Objective C,Watchkit,Apple Watch,我已将JSON数据的NSMutableArray序列化为NSData,以便在每个更新应用程序中传输它。一切按预期进行,WatchKit中的didReceiveApplicationContext方法也被调用 NSData *serialized = [NSKeyedArchiver archivedDataWithRootObject:array]; [[NSUserDefaults standardUserDefaults] setObject:serialized forKey:@"myKe
NSMutableArray
序列化为NSData
,以便在每个更新应用程序中传输它。一切按预期进行,WatchKit中的didReceiveApplicationContext方法也被调用
NSData *serialized = [NSKeyedArchiver archivedDataWithRootObject:array];
[[NSUserDefaults standardUserDefaults] setObject:serialized forKey:@"myKey"];
NSDictionary *applicationData = [[NSDictionary alloc] initWithObjects:@[serialized] forKeys:@[@"JSONData"]];
NSError *error = nil;
//Send Message to the iPhone (handle over the goal value)
if ([WCSession defaultSession]) {
[[WCSession defaultSession] updateApplicationContext:applicationData error:&error];
但如何将其传输回NSArray或NSMutableArray?我试过了
NSArray *responseArray = [NSJSONSerialization JSONObjectWithData:applicationContext options:0 error:&jsonParsingError];
但我有一个Sigabrt错误
更新
NSMutableArray *keys = [s allKeys];
NSMutableArray *values = [s allValues];
给我:
它是不是
applicationData
是NSDictionary
不是NSData
。您需要获取键JSONData
的NSData
对象。由于您将JSONData
存储在NSDictionary
中,看起来您必须解析两个对象,因为您完全正确
NSData*counterValue = [applicationContext objectForKey:@"JSONData"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:counterValue];