3

最終行は常に例外をスローします:「JSON ディクショナリの無効なキー」。理由がわかりません。「msg」辞書を印刷できます。

NSDictionary* header = @{
@(udpVersion) : @"ver",
@(self.dataType) : @"type",
@(self.ack) : @"ack",
[WBUserMng sharedClient].getUserId : @"src",
};

NSDictionary* msg = @{
header:@"head",
self.payload:@"data",
};

NSError* error = nil;
return [NSJSONSerialization dataWithJSONObject:msg options:kNilOptions error:&error]
4

2 に答える 2

8

ディクショナリ リテラルの新しい Objective C 構文では、キーの順序が間違っていると思います。それはおそらく

NSDictionary* msg = @{
    @"head" : header,
    @"data" : self.payload
};

header辞書も同様です。

于 2012-10-10T09:12:37.160 に答える
-1

@{} または @(self.dataType) ディレクティブを初めて見ました。どのようにコンパイルできるかわかりません。もっとヒントをください。

NSDictionary* dic = [NSDictionary dictionaryWithObject: @"a" forKey: @"b"];

[NSJSONSerialization dataWithJSONObject: dic options: NSJSONWritingPrettyPrinted error: nil];

また

NSString* jsonString =  @"{\"foo\": \"bar\", \"foo2\": \"bar2\"}";
// no commat one the last JSON line
[NSJSONSerialization dataWithJSONObject: jsonString options: NSJSONWritingPrettyPrinted error: nil];
于 2012-10-10T09:04:14.127 に答える