好的,来自 perl 背景,我习惯于 Arrays 将 refs 保存到 Hashes(iPhone 用语中的字典)。
我想知道的是:如果我有一个 NSMutableDictionaries 的 NSArray。假设我将以下 NSMutableDictionary 添加到 NSArray:
[theArray addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys: timestamp, @"timestamp" ,name, @"name" ,lat, @"lat" ,lon, @"lon" , nil]];
然后后来我像这样循环遍历数组:
for (NSMutableDictionary theDict in theArray)
{
}
每个都theDict
代表一个指针 NSMutableDictionary 的数据,以便我可以这样做:
for (NSMutableDictionary *theDict in theArray)
{
if ([theDict objectForKey:@"timestamp"] != nil && [[theDict objectForKey:@"timestamp"] isEqualToString:@"timestamp"])
{
[theDict setObject:@"new name" forKey@"name"];
}
}
然后期望theArray
在 theArray 的整个生命周期中保持更改的值?
或者,我是否需要这样做:
int ct = 0;
for (NSMutableDictionary *theDict in theArray)
{
if ([theDict objectForKey:@"name"] != nil && [[theDict objectForKey:@"name"] isEqualToString:@"name you want to change"])
{
NSMutableDictionary *tmpDict = [[NSMutableDictionary alloc] initWithDictionary:theDict copyItems:YES];
[tmpDict setObject:@"new name" forKey@"name"];
[theDict replaceObjectAtIndex:ct withObject:tmpDict];
[tmpDict release];
break;
}
ct += 1;
}
它不可能是所有的代码,可以吗?-- 只是为了替换 NSArray 中保存的 NSMutableDictionary 的键的一个值?
抱歉,如果这个问题对某些人来说是显而易见的......但我仍然试图围绕指向 Objective-c 中的字典(或对象)的指针——大致相当于 perl 中哈希的引用——与副本Objective-c 中对象的(或深拷贝)。NSArray 持有指向 NSMutableDictionaries 的指针(希望如此)使问题变得更加混乱。这就是它在 perl 中的完成方式——据我所知——在名称之外(指针与引用).. 在 Objective-c 中也是如此。