0

我正在使用 gamekit 在 nsdictionary 中发送一个 nsnumber。当我 NSlog 字典时,数字没问题,但是当我尝试获取 NSNumber 时,它总是(空)。

NSMutableDictionary *dict = [NSKeyedUnarchiver  unarchiveObjectWithData:data];
NSNumber *receivedHostNum = (NSNumber*)[dict objectForKey:@"h"];
if (gameStarted == NO){

    NSLog(@"%@",dict);
    NSLog(@"My Num:%i",[hostNum intValue]);
    NSLog(@"%@",receivedHostNum);
    NSLog(@"Recieved Num:%i",[receivedHostNum intValue]);

    if ([hostNum intValue]>[receivedHostNum intValue])
        NSLog(@"You are host");
    else
        NSLog(@"You are client");
}

这是日志:

2012-08-21 14:34:06.067 PeerPicker[6667:c07] {
    "-589267889" = h;
}
2012-08-21 14:34:06.068 PeerPicker[6667:c07] My Num:-2142897577
2012-08-21 14:34:06.068 PeerPicker[6667:c07] (null)
2012-08-21 14:34:06.069 PeerPicker[6667:c07] Recieved Num:0
2012-08-21 14:34:06.069 PeerPicker[6667:c07] You are client
4

1 回答 1

3

我认为你把你的号码放在你的字典里是错误的。您的日志显示:

2012-08-21 14:34:06.067 PeerPicker[6667:c07] {
    "-589267889" = h;
}

它应该是:

2012-08-21 14:34:06.067 PeerPicker[6667:c07] {
    "h" = -589267889;
}

在构造数组或存储数组时,您已经反转了键和对象。

于 2012-08-21T13:44:53.900 回答