我有一个奇怪的问题。我正在创建一个出现日历作为圣诞节更新的一部分,并试图防止两次解锁相同的奖品(奖品在应用程序的其他地方使用)。
奖品列表存储在 plist 中,因为它似乎是一种快速输入/读取数据的方法。
-(Prize*)getPrizeForDay:(NSInteger)integer
{
NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"XmasPresents" ofType:@"plist"];
NSArray* contentArray = (NSArray*)[NSArray arrayWithContentsOfFile:plistPath];
NSDictionary* dictionary = (NSDictionary*)[contentArray objectAtIndex:integer-1];
Prize* prize = (Prize*)[Prize prizeWithType:[[dictionary objectForKey:@"ContentId"]intValue] andName:[dictionary objectForKey:@"Name"] andContent:[dictionary objectForKey:@"Content"] andAnswer:[dictionary objectForKey:@"Answer"]];
if(![self.calendarPrizes containsObject:prize])
[self.calendarPrizes addObject:prize];
else
prize.unlocked = YES;
return prize;
}
如果 self.calendarPrizes 不存在并在退出时存储在 NSUserDefaults 中,则会在 didFinishLaunching 上的应用程序委托中初始化 self.calendarPrizes。此函数在单例类中。
再次运行函数时出现奇怪的 NSArray 不再是 NSArray, NSDictionary 不再是字典, Prize 不再是奖品!!!它们都被初始化为随机的 Cocos2d 对象。因此,可以多次添加奖品。
基本上帮助!
更新
此字符仅出现在 iOS6 中,今天早上在 iOS 5 测试设备上进行了测试,它按预期工作。