HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 使用NSPredicate的Swift过滤器阵列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Swift编写的应用程序,它从他们的地址簿中@L_696_3@用户联系人.

我想过滤掉只包含公司名称的联系人(这样你就可以得到“假定的”真人联系而不是商家)

以下是我在app的Objective-C版本中实现的方法

NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfallPeople(addressBook);

NSPreDicate *preDicate = [NSPreDicate preDicateWithBlock:^BOOL(id person,NSDictionary *bindings) {
    NSString *firstName = CFBridgingRelease(ABRecordCopyValue((__bridge ABRecordRef)person,kABPersonFirstNameProperty));
    NSString *lastName  = CFBridgingRelease(ABRecordCopyValue((__bridge ABRecordRef)person,kABPersonLastNameProperty));

    return (firstName || lastName);
}];

NSArray *peopleNotCompanies = [allContacts filteredArrayUsingPreDicate:preDicate];

这很好用,所以这是我尝试在Swift中做到这一点:

var contactList: NSArray = ABAddressBookCopyArrayOfallPeople(addressBook).takeRetainedValue()

var preDicate: NSPreDicate = NSPreDicate { (AnyObject person,NSDictionary bindings) -> Bool in
    var firstName: String = ABRecordCopyValue(person as ABRecordRef,kABPersonFirstNameProperty).takeRetainedValue() as String
    var lastName: String = ABRecordCopyValue(person as ABRecordRef,kABPersonLastNameProperty).takeRetainedValue() as String

    return firstName || lastName
})

在这有两个问题.我在return语句和谓词调用结束时收到这些错误

如何在Swift中的ObjC代码中提供类似的功能?或者有更好的方法在swift中检查联系人是否只有公司名称,然后从最终数组中省略它?

谢谢!

解决方法

@H_675_21@ 如果firstName和lastName是可选字符串,则可以将它们与nil进行比较,并在布尔表达式中使用它们.

你的第二个错误是由于关闭后额外的paren.这段代码应该有效.

var preDicate: NSPreDicate = NSPreDicate { (AnyObject person,NSDictionary bindings) -> Bool in
    var firstName: String? = ABRecordCopyValue(person as ABRecordRef,kABPersonFirstNameProperty).takeRetainedValue() as? String
    var lastName: String? = ABRecordCopyValue(person as ABRecordRef,kABPersonLastNameProperty).takeRetainedValue() as? String

    return firstName != nil || lastName != nil
}

大佬总结

以上是大佬教程为你收集整理的ios – 使用NSPredicate的Swift过滤器阵列全部内容,希望文章能够帮你解决ios – 使用NSPredicate的Swift过滤器阵列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。