2016-04-05 10 views
0

In den letzten paar Monaten habe ich eine UILocalizedIndexedCollation verwendet, um ein UITableView-Objekt nach einer Core-Dateneigenschaft "lastName" auf einem Benutzer-NSObject zu sortieren. Mein aktueller Code, um den Abschnitt für jeden Benutzer zu bestimmen, sieht wie folgt aus:Swift-Selektoren mit UILocalizedIndexedCollation

addUserObject.section = self.collation.sectionForObject(user, collationStringSelector: Selector("lastName")) 

jedoch in Xcode 7.3, erhalte ich eine Compiler-Warnung:

No method declared with Objective-C selector 'lastName' 

Mein erster Gedanke war die neue Selector zu verwenden Formatierung, etwa so:

Selector(User.lastName) 

Aber dies erzeugt einen Fehler:

Instance member 'lastName' cannot be used on type 'User' 

Der Code funktioniert so gut wie er ist, aber ich möchte die Warnung auf die "korrekte" Weise loswerden. Hat jemand irgendwelche Ideen?

Antwort

0

Die neue Syntax in Swift 2.2 für Selektoren ist #selector (your_method_name).

In Ihrem Fall warnt der Compiler Sie, dass Sie keine Methode namens "lastName" haben. Von der Optik her versuchen Sie, eine Objekteigenschaft als Selektor zu übergeben, der eine Methode sein muss.

Der zweite Fehler sagt Ihnen, dass Sie eine Klasse Eigenschaft zuzugreifen versuchen, aber die Klasse verfügt nicht über eine solche Eigenschaft. Sie möchten wahrscheinlich auf eine Instanz Variable zugreifen.