在循环内修改 NSMutableArray

发布于 2024-12-28 03:34:06 字数 517 浏览 3 评论 0原文

我有一个充满 Task 对象的 NSMutableArray 。我希望能够删除那些 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 数组始终为空。这是为什么呢?

I have an NSMutableArray filled with Task objects. I want to be able to delete those whose completed property are set to YES

    NSMutableArray *allTasks = (NSMutableArray *)[[TaskStore defaultStore] allTasks];

    NSMutableArray *completedTasks;

    for (Task *task in allTasks) {
        if ([task completed]) {
            [completedTasks addObject:task];
        }
    }

    [allTasks removeObjectsInArray:completedTasks];

While debugging I noticed that the completedTasks array is always empty. Why is this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我乃一代侩神 2025-01-04 03:34:06

您忘记初始化已完成的任务:

NSMutableArray *completedTasks = [NSMutableArray array];

You forgot to initialize the completedTasks :

NSMutableArray *completedTasks = [NSMutableArray array];
爱要勇敢去追 2025-01-04 03:34:06

您尚未初始化已完成的任务。你需要添加这个:

NSMutableArray *completedTasks = [[NSMutableArray alloc] init];

You haven't initialized completedTasks. You need to add this:

NSMutableArray *completedTasks = [[NSMutableArray alloc] init];
美煞众生 2025-01-04 03:34:06

您必须在使用数组之前对其进行初始化,初始化实际上会创建您的数组对象 -

为此,请添加此行以创建一个自动释放的数组(这意味着您不必释放它)

NSMutableArray *completedTasks = [NSMutableArray array];

或者

 NSMutableArray *completedTasks = [[NSMutableArray alloc] init];

但是您必须通过以下方式释放它:当您不使用它时(除非您使用 ARC),请您自己[completedTasks release]

这将创建您的数组对象。

沙尼

You must initialize the array before you can use it, the initializing actually creates your array object -

To do this add This Line to create an autoreleased array (which means you dont have to release it)

NSMutableArray *completedTasks = [NSMutableArray array];

Or

 NSMutableArray *completedTasks = [[NSMutableArray alloc] init];

But then you will have to release it by yourself [completedTasks release] when you are not using it any moere (unless you are using ARC).

This will create your array object.

Shani

白昼 2025-01-04 03:34:06

来自 NSMutableArray 文档:

此方法假设 otherArray 中的所有元素都响应 hash 和 isEqual:。

您可以尝试:

 [allTasks filterUsingPredicate:[NSPredicate predicateWithFormat:@"completed = %@", [NSNumber numberWithBool:YES]]]

from NSMutableArray documentation :

This method assumes that all elements in otherArray respond to hash and isEqual:.

You can try :

 [allTasks filterUsingPredicate:[NSPredicate predicateWithFormat:@"completed = %@", [NSNumber numberWithBool:YES]]]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文