【发布时间】:2015-10-26 04:15:56
【问题描述】:
我有一个在 iphone 4 上运行的 ios 7 应用程序。我有一个奇怪的问题,由于标题中的错误,应用程序在 for 循环内崩溃。我检查了 SO,它说当您更改要迭代的对象时会发生错误。 所以我将我使用的两个变量都复制到了临时变量中,但问题仍然存在。 第一次迭代完成时会出现问题。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary * badges = [defaults objectForKey:@"badges"];
NSMutableDictionary *newBadges = badges;
for(NSString* key in badges)
{
NSDictionary* badge = [badges objectForKey:key];
if([[badge objectForKey:@"achived"] isEqual: @"NO"])
{
if([self checkBadgeCondition:badge])
{
NSMutableDictionary *tempBadge = [badge mutableCopy];
[self showAlertBadge:badge];
[tempBadge setObject:@"YES" forKey:@"achived"];
[newBadges setObject:tempBadge forKey:[tempBadge objectForKey:@"name"]];
}
}
}
【问题讨论】:
-
checkBadgeCondition内部发生了什么?此外,您可能希望转换为 Objective-C 2.0 语法。即,[tempBadge setObject:@"YES" forKey:@"archived"]可以简化为tempBage[@"archived"] = @"YES"。
标签: ios objective-c