アップデートする前に、私はこのコードがうまく働きました。スウィフト2.2文字列リテラルセレクタ
文字列リテラルセレクタをセレクタ( "lastName")に変更しようとしましたが、 'index'は常に-1として返されます。私には解決策はありません。
この照合メソッドは、指定されたオブジェクトのプロパティ名をとります。そして、Personクラスは本当にそれらのプロパティ(lastName、firstName)を持っています。
しかし、どうすればこの作品を再び手に入れることができますか? #selectorを使った実験では、私には何も与えませんでした。 '' #selector 'の引数は、初期化子またはメソッドを参照していません。このsectionForObject(、collationStringSelector :)はメソッドを持ちませんが、プロパティ名を取るので不思議ではありません。
マットのものも良い読書です:http://stackoverflow.com/a/35658335/2227743 – Moritz
私はそれを見ましたが、私の場合はどのように役立つか分かりません。私の場合、セレクタとしてのメソッドは必要ありませんが、何らかのソートのためのプロパティ名が必要です。そして、私はこのセレクタを書く構文に関係なく、新しい構文は既存のメソッド名を必要とし、文字列リテラルを必要としないので動作しません。 –
[sectionForObject](https://developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalizedIndexedCollation_Class/index.html#//apple_ref/occ/instm/UILocalizedIndexedCollation/sectionForObject:collationStringSelector :)はセレクタをとりますこれは、 "照合に使用されるオブジェクトの識別文字列を返すメソッドを識別する"ので、Module.Class.methodを使用すると動作するはずです(おそらくクラス内でプロパティを使用する代わりにプロパティを返すメソッドが必要です新しい構文はないことについて確認してください) – Moritz