objective c如何动态创建字典并引用它们

时间:2011-11-30 10:56:32

标签: iphone objective-c nsmutabledictionary

我需要创建和销毁动态词典或数组, 并将它们作为实例变量,

所以例如,[伪代码]

*的.h

 nsmutableDictionary myDictn???
 nsstring arrayn ???

如何创建一个实例dictionarie,以及dinamically创建和销毁的属性?以及如何引用它?

*。米

 n = 0
 create container {
  myDictn alloc init
 n+1
 }



other {
myDictn addobject@"data" forKey"myKey"

}

destroy container {
myDictn release
n-1
 }

所以打算表明我想拥有myDict1,myDict2 ...... 如果创建, 或者在需要时销毁它们

非常感谢!

3 个答案:

答案 0 :(得分:1)

动态创建字典&向他们添加条目你可以这样做 -

NSMutableDictionary *dictResult = [[[NSMutableDictionary alloc] init] retain];
[dictResult setValue:result forKey:@"key"];

这里result可以是任何东西。 NSStringNSArray等。同时使用retain保留此对象&如果没有明确释放,会导致内存泄漏。而是尝试以autorelease方式执行ios,以便在不再引用时释放对象。你这样做 -

NSMutableDictionary *dictResult = [[[NSMutableDictionary alloc] init] autorelease];

这就是动态创建词典所需的全部内容。

答案 1 :(得分:1)

如果我的问题正确,这很容易

@interface MyClass {
  NSMutableDictionary *dict;
  NSMutableArray *arr;
}

@property (nonatomic, retain) NSMutableDictionary *dict;
@property (nonatomic, retain) NSMutableArray *arr;

@end

实施档案

@import "MyClass.h"

@implementation MyClass

@synthesize dict;
@synthesize arr;

- (id) init {
  self = [super init];
  if (self) {
    dict = [[NSMutableDictionary alloc] init];
    arr = [[NSMutableArray alloc] init];
  }
  return self;
}

- (void) dealloc {
  [dict release];
  [arr release];
  [super dealloc];
}

- (void) otherStuff {

  [dict setObject: @"value" forKey: @"key"];
  [arr addObject: @"item"];

}

@end

来自其他班级的用法:

...
MyClass *instance = [MyClass new];
[instance.dict setObject: @"value" forKey: @"key"];
NSLog(@"Array items: %@", instance.arr);
[instance release];
...

答案 2 :(得分:1)

我认为你要求的是如何动态创建多个可变字典。您还没有说出编号方案的来源,因此您可能需要为此目的修改此解决方案。

你想要的是一个字典数组或字典。

将一个NSMutableDictionary称为dictionaryContainer。然后,当您要创建字典编号7时,请执行

NSMutableDictionary *aDictionary = [NSMutableDictionary new];
[dictionaryContainer setObject:aDictionary forKey:[NSNumber numberWithInt:7]];

要记住该词典,请执行

NSMutableDictionary *theSameDictionary = [dictionaryContainer objectForKey:[NSNumber numberWithInt:7]];

您不必对7进行硬编码,您可以从任何地方获取它并将其作为整数变量传递。