gpt4 book ai didi

objective-c - 使用 filteredArrayUsingPredicate 方法按属性过滤数组中的对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:15 24 4
gpt4 key购买 nike

我不明白如何使用谓词,我有一段很长的代码来按属性“类型”从数组中过滤对象,突然间我看到了可以让我的生活更美好的方法“filteredArrayUsingPredicate”。我尝试写谓词,但总是出错;谁能告诉我怎么写才好?

我有方法 - (void) filterData: (NSString *)filteredWord:

我还有对象数组(事件):NSArray *eventsArray。我想使用 filteredArrayUsingPredicate 来获取包含对象(事件)的新数组,其中它们的属性(类型)等于 filterWord。请注意,Event 是 Core Data Managed 子类。

甚至可以用 predicate 来做到这一点吗?

我的一个尝试:

NSString *propertyName = @"type";
NSArray *eventsArray = [[[[self currentPerson] events] objectEnumerator]allObjects];
NSPredicate *predicte = [NSPredicate predicateWithFormat:@"%k like '%@'",propertyName,filteredWord];
[eventsArray filteredArrayUsingPredicate:predicte];

最佳答案

试试这个:

NSString *propertyName = @"type";
NSArray *eventsArray = [[[self currentPerson] events] allObjects];
NSPredicate *predicte = [NSPredicate predicateWithFormat:
@"%k like %@",propertyName, filteredWord];
NSArray *filteredArray = [eventsArray filteredArrayUsingPredicate:predicte];

您忽略过滤后的结果。 filteredArrayUsingPredicate: 返回 NSArray实例。它不会过滤原始文件 数组就位,因为 NSArray 对象是不可变的。你要么 必须做一个 NSMutableArray 然后使用 filterUsingPredicate: 就地过滤数组,或者 你必须对返回的数组做一些事情 filteredArrayUsingPredicate:(记录、保存等...)

不要在属性周围使用单引号。 (感谢@MartinR 的线索)

关于objective-c - 使用 filteredArrayUsingPredicate 方法按属性过滤数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13901646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com