我在我的app delegate中引用了这个名为favorites的数组。 当我在视图控制器中访问它时,我使用此代码
MultiViewAppDelegate *app = (MultiViewAppDelegate *)[[UIApplication sharedApplication] delegate];
[app.favoritesArray addObject:@"one"];
在应该显示此信息的表中,我试图询问数组是否包含某个元素,以及是否使用此代码显示该项目。
NSLog (@"2");
favoritesArray = [[NSMutableArray alloc]init];
didContain = [[NSMutableArray alloc]init];
NSLog (@"3");
if ([favoritesArray containsObject:@"one"])
{[didContain addObject:@"one"];
NSLog (@"4"); }
但是在nslog 3之后代码没有运行... 有人可以告诉我为什么吗?
答案 0 :(得分:2)
首先,
NSLog (@"2");
favoritesArray = [[NSMutableArray alloc]init];
以上行将重置您的favoritesArray。它也会泄漏旧的。
didContain = [[NSMutableArray alloc]init];
NSLog (@"3");
if ([favoritesArray containsObject:@"one"])
在这里,你只是问一个空数组,如果它包含某些东西,它显然不会。
{[didContain addObject:@"one"];
NSLog (@"4"); }
这就是为什么以上都不会发生的原因。
不要重置它,而是确保设置它。
if (favoritesArray != nil &&
[favoritesArray containsObject:@"one"]) {
NSLog(@"yay, it had one in it");
} else {
NSLog(@"it's nil or it didn't have one in it");
}
你可能不需要favoritesArray != nil
,但我把它放入,因为你可能已经把你的alloc-init内容放进去,因为你有时会得到一个零值。不太可能。
if ([favoritesArray containsObject:@"one"]) {
// contains "one"
}
应该这样做。
答案 1 :(得分:0)
检查代理中的favoritesArray
是否已初始化。如果是nil
,则条件永远不会成立。