你好我有这个数组比较两个数组,看看它是否包含一个对象,但是在用nslog测试之后
NSLog (@"1");
favoritesArray = [[NSMutableArray alloc] init];
NSLog (@"2");
//Add items
// favoritesArray = [[NSMutableArray alloc]init];
didContain = [[NSMutableArray alloc]init];
NSLog (@"3");
if ([favoritesArray containsObject:@"one"])
{
[didContain addObject:@"one"];
NSLog (@"4");
}
第4个日志没有出现。 这是否意味着我的实现是错误的,如果它包含一个对象,或者它意味着没有这样的文件?
EDIT 这是我添加数组的地方
-(IBAction) addToFavorites {
favoritesArray = [[NSMutableArray alloc] init];
[favoritesArray addObject:@"one"];
NSLog (@"hello");
为什么这不会显示为对象@"one"
答案 0 :(得分:1)
第四个日志没有出现,因为数组不包含对象@"one"
- NSLog
在if
语句测试范围内。
如图所示,这是正确的 - 数组将为空,因此没有@"one"
就不足为奇了。
据推测,真正的代码可以将内容放入数组中,但是因为我们无法看到它很难说出来。
编辑:虽然您在addToFavorites
问题中添加的代码似乎很简单,但仍然不清楚它与原始代码的关系。从哪里打来的?什么是事件序列?
特别是一个问题是您似乎在两个位置分配新阵列。如果是这种情况,那么您没有看到@"one"
出现的原因是您将其添加到一个数组中并在另一个数组中查找它。他们俩恰好被称为favoritesArray
的事实是偶然的,只是混淆了水。
事实上,你很可能不应该在任何一个位置分配数组,而应该仅引用一个只在其他地方分配一次的数组(例如,在你的类的指定init
方法中)然后在申请的整个生命周期内保留为ivar。