我有NSMutableArray
个Task
个对象。我希望能够删除completed
属性设置为YES
NSMutableArray *allTasks = (NSMutableArray *)[[TaskStore defaultStore] allTasks];
NSMutableArray *completedTasks;
for (Task *task in allTasks) {
if ([task completed]) {
[completedTasks addObject:task];
}
}
[allTasks removeObjectsInArray:completedTasks];
调试时我注意到completedTasks
数组总是空的。这是为什么?
答案 0 :(得分:2)
您忘记初始化completedTasks:
NSMutableArray *completedTasks = [NSMutableArray array];
答案 1 :(得分:0)
必须先初始化数组才能使用它,初始化实际上会创建数组对象 -
要执行此操作,请添加此行以创建自动释放的数组(这意味着您无需释放它)
NSMutableArray *completedTasks = [NSMutableArray array];
或者
NSMutableArray *completedTasks = [[NSMutableArray alloc] init];
但是当你不使用它时,你必须自己释放它[completedTasks release]
(除非你使用ARC)。
这将创建您的数组对象。
沙尼
答案 2 :(得分:0)
您尚未初始化completedTasks。你需要添加这个:
NSMutableArray *completedTasks = [[NSMutableArray alloc] init];
答案 3 :(得分:0)
:
此方法假定otherArray中的所有元素都响应hash和isEqual:。
您可以尝试:
[allTasks filterUsingPredicate:[NSPredicate predicateWithFormat:@"completed = %@", [NSNumber numberWithBool:YES]]]