gpt4 book ai didi

ios - 我如何通过非字母字符的 firstName 过滤 NSMutableArray

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

我想过滤名称以非字母字符开头的数组。我想在表格 View 的不同部分下显示 firstName 以非字母字符开头的联系人。我尝试了下面的代码,但它崩溃了,请在下面找到原因:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT(firstName BEGINSWITH[c] %@)",arrIndex]; //where arrIndex is the array of alphabetical characeters.
NSArray *arrContacts = [arrayTotalContacts filteredArrayUsingPredicate:predicate];

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法对非字符串的内容执行子字符串操作 (lhs = iPhone rhs = ( 一种, 乙, C, , 乙, F, G, H, 我, , , 大号, 米, , 哦, , 问, , , 吨, 你, 五, , X, 是, Z))'

arrayTotalContacts 具有以下数据:

(
{
firstName = iPhone;
lastName = "";
},
{
firstName = Madhu;
lastName = "";
},
{
firstName = "Swa";
lastName = "";
},
{
firstName = TechV;
lastName = "";
},
{
firstName = Vedika;
lastName = Vt;
}
)

最佳答案

您可以将正则表达式与 Core Data 谓词一起使用:

[NSPredicate predicateWithFormat:@"NOT (firstName MATCHES %@)", @"^[A-Za-z].*"]

其中 ^[A-Za-z].* 是所有以 A-Z 或 a-z 开头的字符串的正则表达式。要使其也适用于外语字母(例如“Ä”),请使用Unicode 属性名称:

[NSPredicate predicateWithFormat:@"NOT(firstName MATCHES %@)", @"^\\p{Letter}.*"]

此处 ^\\p{Letter}.* 是所有以字母开头的字符串的正则表达式。

但是如果这是一个 TableView ,你最好使用一个获取的结果 Controller 及其 sectionNameKeyPath 参数。参见此处的示例:

一些示例如何根据首字母对 TableView 进行分组。它应该是可以修改代码以将所有不以字母开头的名称分组为一个单独的组。

关于ios - 我如何通过非字母字符的 firstName 过滤 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539909/

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