То, что я пытаюсь сделать, это поиск массива словарей для определенного целевого словаря, а если найден, замените фактический словарь в исходном массиве на целевой словарь. Алгоритм поиска работает, но копирование словарей не выполняется. Основная линия в вопросе является тот, который говорит:Копирование NSMutableDictionary через указатели
tempDict=targetDict;
Я надеялся, что tempDict будет указатель на исходный словарь из исходного массива, но при попытке войти имя автора, я получаю " moe "вместо" steve ".
-(void)viewDidAppear
{
[actualDictionary setObject:@"test" forKey:@"mainNote"];
[actualDictionary setObject:@"moe" forKey:@"authorName"];
[targetDictionary setObject:@"test" forKey:@"mainNote"];
[targetDictionary setObject:@"steve" forKey:@"authorName"];
[arrayOfNotes addObject:actualDictionary];
[self beginSearchWithMainArray];
}
-(void)beginSearchWithMainArray;
{
[self searchArray:arrayOfNotes forDict:targetDictionary];
}
-(void)searchArray:(NSMutableArray*)array forDict:(NSMutableDictionary*)targetDict
{
NSString *targetText=[targetDict objectForKey:@"mainNote"];
for(int i=0;i<[array count];i++)
{
NSMutableDictionary *tempDict=[array objectAtIndex:i];
NSString *possibleText=[tempDict objectForKey:@"mainNote"];
if([possibleText isEqualToString:targetText])
{
//found match, replace tempDict with targetDict
tempDict=targetDict;
NSLog(@"found match");
NSString *authorName=[[arrayOfNotes objectAtIndex:0] objectForKey:@"authorName"];
NSLog(@"%@", authorName); //should be steve
return;
}
//no match, search sub notes
...
}
}
Ах да, я думаю, что это решала issue..thanks! – Snowman