Ich habe eine Anwendung in Swift geschrieben, die die Kontakte der Benutzer aus ihrem Adressbuch zieht.Swift Filter-Array mit NSPredicate
Ich möchte den Kontakt filtern, die nur einen Firmennamen enthalten (so dass Sie sich Ihre „angenommen“ reale Person Kontakt und nicht Unternehmen)
Hier ist, wie dies ist in der Objective-C-Version zu erreichen meine App:
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];
Die perfekt funktioniert, also hier ist mein Versuch, dies in Swift zu tun:
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
})
Nun ist diese ein paar Probleme hat. Ich bin diese Fehler auf der return-Anweisung bekommen und das Ende des Prädikats Aufruf:
Wie kann ich eine ähnliche Funktionalität in meinem ObjC Code gefunden bieten in Swift? Oder gibt es einen besseren Weg, um zu überprüfen, ob ein Kontakt NUR einen Firmennamen hat und ihn dann aus dem letzten Array weglässt?
Danke!
Wenn Sie NSArray anstelle von Array verwenden, können Sie diese Codezeile dann ausführen: filteredContacts lassen: NSArray = contactList.filteredArrayUsingPredicate (Prädikat) –
Vielen Dank für die Klarstellung, die extra) hat mich wirklich abgewiesen, weil ich nicht bemerkt habe es! –