含まれているメソッドを使用して、NSArray に含まれている NSMutableDictionary へのポインターを返しています。ただし、NSMutableArray (theOne) は変更不可能な NSDictionary として作成されています。このメソッドで辞書を取得した後に辞書を変更したいので、これは問題です。
- (NSMutableDictionary*)getMatFromBoutKey:(NSString*) boutKey
{
/*
* Returns the mat object with the provided boutKey.
* Returns nil if no mat has that boutKey.
*/
NSUInteger idx = [[event objectForKey:@"mats"] indexOfObjectPassingTest:
^ BOOL (NSMutableDictionary* obj, NSUInteger idx, BOOL *stop)
{
return [[obj objectForKey:@"boutKey"] isEqualToString:boutKey];
}];
if (idx == NSNotFound)
return nil;
else {
NSMutableDictionary* theOne = [[event objectForKey:@"mats"] objectAtIndex: idx];
return theOne;
}
}
これは、theOne が最初に参照された直後のブレークポイントで停止したデバッガーのイメージです。
theOne が可変でないのはなぜですか? NSMutableDictionary へのポインターを返して、値が返された後に変更できるようにするにはどうすればよいですか?
ありがとう!