cocoa - 数组排序错误未知原因

标签 cocoa arrays

你好,我有一个数组,它比较两个数组以查看它是否包含一个对象,但是在使用 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");
}

第四条日志没有出现。 这是否意味着我的实现是错误的,如果它包含一个对象,或者意味着不存在这样的文件?

编辑 这是我添加数组的地方

-(IBAction) addToFavorites {

favoritesArray = [[NSMutableArray alloc] init];
[favoritesArray addObject:@"one"];
NSLog (@"hello");

为什么这没有显示为对象@"one"

最佳答案

第四条日志没有出现,因为数组不包含对象@"one" --NSLog位于 if 内该案例的语句测试。

使用所示代码,这是正确的 - 数组将为空,因此没有 @"one" 并不奇怪。 .

大概真正的代码做了一些事情,将东西放入数组中,但由于我们看不到,所以很难说任何事情。

编辑:尽管您已添加到 addToFavorites 问题中的代码看起来很简单,但仍然不清楚它与原始代码有何关系。它是从哪里调用的?事件发生的顺序是什么?

一个特别的问题是您似乎在这两个位置分配了一个新数组。如果是这种情况,那么您看不到 @"one" 的原因出现的情况是您将其添加到一个数组中并在另一个数组中查找它。事实上,它们都恰好被称为 favoritesArray这是偶然的,只是搅浑了水。

事实上,您很可能不应该在任一位置分配数组,而应该引用仅在其他位置分配一次的数组(例如,在您的类指定的 init 方法中)并且然后在应用程序的整个生命周期中保留为 ivar。

关于cocoa - 数组排序错误未知原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3519943/

相关文章:

javascript - 成对获取数组值javascript

arrays - 迭代多个结构数组的最简单方法?

sql - PostgreSQL 根据国家表解析数组中的国家

javascript - 即使索引越界如何从数组中获取项目

objective-c - 当我们在 Autorelease 池中写入 [Obj autorelease] 时会发生什么?

cocoa - 按下按钮后从 rac_GET 创建 RACSignal,取消之前的请求

objective-c - Block_copy 是递归的吗?

c - 类型、表达式和数组维度

cocoa - 使用 Core Data 将 nib 拆分为多个 nib 文件

objective-c - 可变对象与不可变对象(immutable对象)的性能