NSArray key =>值,

时间:2015-02-25 22:21:29

标签: ios objective-c nsarray

我的关键值当前系统不起作用。这里设置了数组。

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提供了这个。

(     HostMatch,     "" ),(     "&#34 ;,     主机名 )

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

3 个答案:

答案 0 :(得分:2)

你应该拥有的是:

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

答案 1 :(得分:1)

    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

答案 2 :(得分:0)

@{@"matchName" : _matchName}这是[NSDictionary dictionaryWithObjectsAndKeys:_matchname, @"matchName"]的简写。这意味着您有NSArrayNSDictionaries

你可能想要的是一个带有两个密钥的NSDictionary。像这样:

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

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