Ios NSArray键=>;价值

Ios NSArray键=>;价值,ios,objective-c,nsarray,Ios,Objective C,Nsarray,我的键值当前系统不工作。这里是设置数组的位置 NSArray *matchInfo = [[NSArray alloc] initWithObjects: @{@"matchName" : _matchName}, @{@"hostName" : _hostName}, nil]; 然后将其转换为NSData NSData *dataToS

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

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, "" ), ( "", 主机名 )

我无法理解,这只会让我意识到数组最初的设置是错误的。

{“matchName”:\u matchName}
这是
[NSDictionary dictionaryWithObjectsAndKeys:\u matchName,@“matchName”]的缩写。
。这意味着您有一个
NSArray
和两个
nsdictionary

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

NSDictionary *dictionary = @{@"matchName" : _matchName, @"hostName" : _hostName}
这与PHP和其他语言中的数组(“key”=>“value”、“key”=>“value”)类型相对应。

{matchName]:\u matchName}
这是
[NSDictionary dictionary dictionary with objectsandkeys:\u matchName,@“matchName”的缩写]
。这意味着您有一个
NSArray
和两个
nsdictionary

您可能需要的是一个带有两个键的单一NSDictionary。例如:

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

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

您应该拥有的是:

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

你应该做的是:

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


日志
matchInfo
receivedArray
,这只是基本调试。调试是开发软件的一个重要部分。在我看来,考虑到(不正常的)输入,调试是完全正常的。为什么要有一个包含字典的数组,其中每个字典只包含一个键/值对?(当你不明白自己在做什么时,使用
valueForKey
是很危险的,因为这只会让你更加困惑。)@HotLicks数据是通过蓝牙发送的,所以我不一定要每个键都有一个字典。我更喜欢旧的days数组(“key”=>“value”,“key”=>“value”),这样我就可以引用valueAtKey“key”“示例..?这是一个糟糕的问题,因为在使用Objective-C时,您确实应该从一开始就了解NSDictionary是什么。您不应该在这些基本概念上寻求帮助。log
matchInfo
receivedArray
,这只是基本调试。调试是开发软件的一个重要部分。在我看来,考虑到(不正常的)输入,调试是完全正常的。为什么要有一个包含字典的数组,其中每个字典只包含一个键/值对?(当你不明白自己在做什么时,使用
valueForKey
是很危险的,因为这只会让你更加困惑。)@HotLicks数据是通过蓝牙发送的,所以我不一定要每个键都有一个字典。我更喜欢旧的days数组(“key”=>“value”,“key”=>“value”),这样我就可以引用valueAtKey“key”“例如….?这是一个糟糕的问题,因为在使用Objective-C时,你真的应该从一开始就理解NSDictionary是什么。你不应该在这些基本概念上寻求帮助。我不一定想要一本字典,有可能在键=>值的基础上这样做吗?@Daniel-字典就是这样做的——它将每个键与一个值关联起来。为什么会有人否决这个答案?它可能需要解释为什么要使用此代码,但这是正确的答案。@rmaddy我不确定,也许有人被他们对答案的一条评论撞了一下。@rmaddy因为它只是我答案的复制粘贴。我不一定要字典,有可能在键=>值的基础上这样做吗?@Daniel-字典就是这样做的——它将每个键与一个值关联起来。为什么会有人否决这个答案?它可以解释为什么应该使用此代码,但这是正确的答案。@rmaddy我不确定,也许有人被他们对答案的评论撞了一下。@rmaddy,因为它只是我的answer@Rick谢谢你的回答,如果我的声誉再高一点,我会投赞成票的。不管怎样,谢谢你。@Rick谢谢你的回答,如果我的声誉再高一点,我会投它一票。不管怎样,谢谢你。