Cocoa 数组排序错误未知原因
您好,我有一个数组,它比较两个数组,看看它是否包含一个对象,但是在使用nslog测试它之后Cocoa 数组排序错误未知原因,cocoa,arrays,Cocoa,Arrays,您好,我有一个数组,它比较两个数组,看看它是否包含一个对象,但是在使用nslog测试它之后 NSLog (@"1"); favoritesArray = [[NSMutableArray alloc] init]; NSLog (@"2"); //Add items // favoritesArray = [[NSMutableArray alloc]init]; didContain = [[NSMutableArray alloc]init]; NSLog (@"3"); if ([fa
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");
}
第四个日志不会出现。
这是否意味着我的实现是错误的,若它包含一个对象,或者它意味着并没有这样的文件存在
编辑
这里是我添加数组的地方
-(IBAction) addToFavorites {
favoritesArray = [[NSMutableArray alloc] init];
[favoritesArray addObject:@"one"];
NSLog (@"hello");
为什么这不会显示为对象
@“one”第四个日志不会出现,因为数组中不包含对象@“one”
,NSLog
在测试该情况的if
语句中
对于如图所示的代码,这是正确的——数组将是空的,因此没有@“one”
也就不足为奇了
据推测,真正的代码会在数组中放入内容,但由于我们看不到这一点,因此很难对其进行任何说明
EDIT:虽然您添加到问题中的addToFavorites
代码看起来足够简单,但仍不清楚它与原始代码的关系。它是从哪里来的?事件的顺序是什么
一个特别的问题是,您似乎正在两个位置分配一个新数组。如果是这种情况,那么您没有看到出现@“one”
的原因是您将它添加到一个数组中,并在另一个数组中查找它。他们两个碰巧都被称为favoritesArray,这是偶然的,只是把水弄脏了
事实上,极有可能您不应该在任何位置分配数组,而应该只引用在其他位置只分配一次的数组(例如,在类指定的init
方法中)然后在应用程序的生命周期内作为ivar保存。此代码中没有任何内容与文件有关。或者至少在类实例的生命周期内,并在实例被释放时释放(即,在类的-(void)dealloc
方法中)。@Alx我想我不能在这里教你这一点。我建议您一步一步地阅读尽可能多的Objective-C和Cocoa教程。试着理解他们的意思,而不是拼凑零碎的代码。你能给我看一些这方面的教程吗?更具体的我想做什么?ThanksAlx:如果您不了解工作中的概念,获取特定应用程序或任务的教程和/或代码片段将不会对您有所帮助。阅读苹果的Objective-C编程语言和Cocoa基础指南文档,或者买本书。如果你选择后一种方式,我推荐斯科特·史蒂文森的《可可与目标C:启动并运行》。