[英]Modifying an NSMutableArray inside a loop
我有一个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
数组总是为空。 为什么是这样?
你忘了初始化completedTasks:
NSMutableArray *completedTasks = [NSMutableArray array];
必须先初始化数组才能使用它,初始化实际上会创建数组对象 -
为此,添加此行以创建自动释放的数组(这意味着您不必释放它)
NSMutableArray *completedTasks = [NSMutableArray array];
要么
NSMutableArray *completedTasks = [[NSMutableArray alloc] init];
但是当你不使用任何moere时(除非你使用ARC),你必须自己发布它[completedTasks release]
。
这将创建您的数组对象。
沙尼
您尚未初始化completedTasks。 你需要添加这个:
NSMutableArray *completedTasks = [[NSMutableArray alloc] init];
来自NSMutableArray文档:
此方法假定otherArray中的所有元素都响应hash和isEqual:。
你可以试试 :
[allTasks filterUsingPredicate:[NSPredicate predicateWithFormat:@"completed = %@", [NSNumber numberWithBool:YES]]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.