2015-11-24 1 views
0

J'utilise un descripteur de tri pour trier un tableau d'un objet NSManagedObject (CoreData).NSSortDescriptor et [__NSCFNumber localizedStandardCompare:]: sélecteur non reconnu envoyé à l'instance

J'ai deux descripteurs de tri pour la valeur Int16 (ajouté le second aujourd'hui).

Pour une raison quelconque, en essayant de trier mon tableau avec le descripteur ajouté, il se bloque avec:

J'ai même essayé de changer mon modèle de données (ajouter un attribut comme Int16 et le remplir), mais la app se bloque chaque fois que j'essaie d'utiliser le descripteur nouvellement ajouté.

Le descripteur est très simple: laisser sortDescriptor4 = NSSortDescriptor (touche: "the_int16_property", croissant: false, sélecteur: "localizedStandardCompare:")

Je suis à une perte. Tout conseil serait utile.

Merci!

Répondre

1

localizedStandardCompare: est une méthode de NSString à "comparer les chaînes triées par le Finder".

codage valeur clé pour numériques propriétés de données de base (comme « Int 16 ») utilise NSNumber instances, et que la classe ne répond pas à localizedStandardCompare:.

Il suffit d'utiliser le sélecteur par défaut compare::

NSSortDescriptor(key: "the_int16_property", ascending: false, selector: "compare:") 
// Swift 2.2 or later: 
NSSortDescriptor(key: "the_int16_property", ascending: false, selector: #selector(NSNumber.compare(_:))) 

ou simplement

NSSortDescriptor(key: "the_int16_property", ascending: false) 
+0

Merci! C'était en fait une erreur de copier et coller. Je ne l'ai même pas remarqué! – goggelj