我希望有人能解释我在这个非常令人沮丧但显然很简单的问题上哪里出错了,我在其他地方做过很多次,但已经打败了我,尽管倾吐了关于这个主题的所有 SO 问题。
我在 viewDidLoad 中实例化一个 NSMutable 字典,
- (void)viewDidLoad
{
[super viewDidLoad];
self.myDictionary = [[NSMutableDictionary alloc] init];
// 这里有更多代码 }
然后填充字典,
[self.myDictionary setObject:[NSNumber numberWithInt:holidayDays] forKey:[self.holidayInfo objectForKey:@"days"]];
但是当我尝试获取特定键的值时,它们返回 NULL,
- (void) processHolidayLoop:(int)i forAKey:(NSString *)aKey using:(UIManagedDocument *)document
{
if ([self.myDictionary respondsToSelector:@selector(objectForKey:)]) { NSLog(@"YES IT DOES");}
int hDays = [[self.myDictionary objectForKey:aKey] intValue];
NSLog(@"aKey is %@", aKey);
NSLog(@"hDays is %d", hDays);
NSLog(@"myDictionary valueForKey: is %@", [[self.myDictionary objectForKey:aKey] description]);
// more code here
}
上面的代码 NSLogs,YES IT DOES,aKey 正确,但是当从另一个方法调用它时给出“hDays is (null)”和“myDictionary valueForKey: is (null)”,
NSString *aKey = [NSString stringWithFormat:@"holiday%d", j ];
[self processHolidayLoop:i forAKey:aKey using:self.document];
我已经使用以下方法检查了 self.myDictionary 中的值和键,并且我已经确认字典正确填充了它的所有键和值。
- (void) describeDictionary:(NSDictionary *)dict
{
NSArray *keys;
int i, count;
id key, value;
keys = [dict allKeys];
count = [keys count];
for (i = 0; i < count; i++)
{
key = [keys objectAtIndex: i];
value = [dict objectForKey: key];
NSLog (@"Key: %@ has value: %@", key, value);
}
}
我已经查看了关于这个问题的所有 SO 答案,并尝试了许多不同的方法来解决这个问题,但我无法让它发挥作用。我确信我遗漏了一些非常明显的东西,但我需要其他人才能看到它。
提前致谢!