如何在Xcode中创建数组的键和值?

5

我是一名新的iPhone开发者,需要您的帮助。

有人能提供如何创建带键和值的数组,并在Xcode中如何获取吗?


你只需要创建数组。 - NSCool
你的意思是键值对还是需要一个二维数组? - Anoop Vaidya
4个回答

12

这是NSMutableDictionary。您可以搜索示例代码。 例如:创建字典

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:@"object1" forKey:@"key1"];

打印字典的所有键和值:

for (NSString* key in [dictionary allKeys]) {
   NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]);
}

你能给我提供一个简单的例子吗? - user1825965
我想知道如何通过循环获取数据? - user1825965

5

您可以使用NSDictionaryNSMutabledictionary来实现此功能,无需使用NSArray。以下是它的工作原理示例。

  NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; // Don't always need this 
  // Note you can't use setObject: forKey: if you are using NSDictionary
  [dict setObject:@"Value1" forKey:@"Key1"];
  [dict setObject:@"Value2" forKey:@"Key2"];
  [dict setObject:@"Value3" forKey:@"Key3"];

那么,您只需执行以下操作即可检索键的值。
  NSString *valueStr = [dict objectForKey:@"Key2"];

这将在valueStr字符串中给出Value2的值。
要向不可变字典NSDictionary添加对象,只需执行以下操作:
 NSDictionary *dict2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Value1", @"Key1", @"Value2", @"Key2", nil];

然后,只需像处理 NSMutableDictionary 一样检索它。两者之间的区别在于,Mutable 字典可以在创建后进行修改,因此可以使用 setObject:forKey 添加对象并使用 removeObjectFroKey: 删除对象,而不可变字典无法修改,因此一旦创建后就不能添加或删除对象,直到它被释放为止。希望这可以帮助你。

如何通过循环获取该数组,通过循环显示键和值。获取方式 NSString *valueStr = [dict objectForKey:@"Key2"];我需要通过循环获取所有键和值,我需要在数组中搜索值。 - user1825965
@user1825965,所以你想在for循环中获取值和键? - Popeye

2

这正是 NSDictionary / NSMutableDictionary 所做的:

NSMutableDictionary *myDictionary = [[ NSMutableDictionary alloc] init];
[ myDictionary setObject:@"John" forKey:@"name"];
[ myDictionary setObject:@"Developer" forKey:@"position"];
[ myDictionary setObject:@"1/1/1984" forKey:@"born"];

区别是,可变的一个可以在创建后添加/修改条目,而另一个则不行。


0
如果您不需要再添加对象,可以创建一个不可变字典:
NSDictionary* dict= @{ @"key1" : @"value1" , @"key2" : @"value2" };

如果您不需要键值对,那么就是一个数组:
NSArray* array= @[ @"value1" , @"value2", @"value3" ];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接