WatchConnectivity 试图将数据发送到 Watch 应用程序

WatchConnectivity attempting to send data to Watch app

我正在尝试将数据从我的 iOS 应用程序发送到 Watch 应用程序。为此,我正在使用 updateApplicationContext。

我有一个 json 文件,我在 NSDictionary 中转换并尝试发送它。但是有一个错误,这里是:

[WCSession updateApplicationContext:error:]_block_invoke failed due to WCErrorCodePayloadUnsupportedTypes

文件读取正确。

下面是尝试发送数据的代码。

NSString *fileName = [[NSBundle mainBundle] pathForResource:@"data"
                                                         ofType:@"json"];
    NSLog(fileName);
    if (fileName) {
        NSData *jsonData = [[NSData alloc] initWithContentsOfFile:fileName];
        NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonData
                                                              options:0
                                                                error:&error];

        if (error) {
            NSLog(@"Something went wrong! %@", error.localizedDescription);
        }
        else {
            NSLog(@"Rsens info: %@", data);
            [WatchSessionManager.sharedManager updateApplicationContextWithApplicationContext:@{@"json": data} error:&error];
        }
    }
    else {
        NSLog(@"Couldn't find file!");
    }

我在某处看到,我们可以发送的类型是有限的,但字典是允许的。不过,我正在发送字典。

你能找出错误是什么吗?

[解决方案]

我发现我的字典里有long类型的值。在我的 JSON 中,我有一些属性被转换为 long 类型。这是之前的属性之一:

"state": 0

我只是将数字放在字符串引号中。

"state":"0"

检查字典的内容。
WatchConnectivity 字典只能包含 property list types.