NSArray 键 => 值,

NSArray key => value,

我的键值当前系统不工作。这里是设置数组的地方。

NSArray *matchInfo = [[NSArray alloc] initWithObjects:
                          @{@"matchName" : _matchName},
                          @{@"hostName" : _hostName},
                          nil];

那么是不是转换成NSData

NSData *dataToSend = [NSKeyedArchiver archivedDataWithRootObject:message];

收到并设置

    NSArray *receivedArray = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData];

    _matchName = [receivedArray valueForKey:@"matchName"];
    _hostName = [NSString stringWithFormat:@"%@",[receivedArray valueForKey:@"hostName"]];

    NSLog(@"%@, %@", _matchName, _hostName);

它们不同的原因是因为我在玩弄不同的方式。然而,nslog 提供了这个。

( 主机匹配, “” ), ( "", 主机名 )

我无法理解,只是让我觉得数组最初设置错误。

@{@"matchName" : _matchName} 这是 shorthand [NSDictionary dictionaryWithObjectsAndKeys:_matchname, @"matchName"]。这意味着您有一个 NSArray 和两个 NSDictionaries.

您可能想要的是一个带有两个键的 NSDictionary。像这样:

NSDictionary *dictionary = @{@"matchName" : _matchName, @"hostName" : _hostName}

这对应于PHP和其他语言的array( "key" => "value", "key" => "value)类型的数组。

你应该拥有的是:

NSDictionary *matchInfo = @{@"matchName" : _matchName,
                            @"hostName"  : _hostName};
    NSArray *array = @[@{@"key1" : @"value1"}, //-index 0-//
                       @{@"key2" : @"value2"}, //-index 1-//
                       @{@"key3" : @"value3"}, //-index 2-//
                       @{@"key4" : @"value4"}]; //-index 3-//

    int i = 0; //-index 0 - 3-//
    NSDictionary *dict = [array objectAtIndex:i];
    NSArray *key = [dict allKeys];
    NSArray *value = [dict allValues];
    NSLog(@"%@", key[0]);
    NSLog(@"%@", value[0]);

result :

2015-08-04 11:46:20.781 key1
2015-08-04 11:46:20.781 value1