Ceci est mon code de classe de modèle actuel.Comment alphabétiser le tableau par son prénom dans Swift?
final class ContactData
{
static let sharedInstance = ContactData()
private var contactList : [Contact] =
[Contact(name:"Mike Smith",email:"[email protected]"),
Contact(name:"John Doe",email:"[email protected]"),
Contact(name:"Jane Doe",email:"[email protected]")]
private init()
{
// SORTING HERE
}
var index = 0
func newContact(new:Contact)
{
contactList.append(new)
//sort
}
func updateContact(updated:Contact)
{
contactList[index]=updated
//sort
}
func previousContact() -> Contact
{
index-=1
if index < 0
{
index = contactList.count-1
}
return contactList[index]
}
func nextContact() -> Contact
{
index+=1
if index == contactList.count
{
index = 0
}
return contactList[index]
}
func firstContact() -> Contact
{
return contactList[0]
}
func currentContact() -> Contact
{
return contactList[index]
}
}
Tout fonctionne correctement, mais je l'ai essayé le tableau de classement par ordre alphabétique Contact
s en utilisant:
var sortedContacts = contactList.sorted{
$0.localizedCaseinsensitiveCompare($1)==ComparisonResult.orderedAscending}
}
mais je reçois une erreur:
Value of type '
Contact
' has no member 'localizedCaseinsensitiveCompare
'
En regardant à travers des questions ici J'ai seulement pu trouver cette seule manière d'alphabétiser le tableau.
Je courais Swift 3 et Xcode 8.3
Quelques points à considérer avec cette solution. Tout est lié à 'name 'seulement. Cela suppose que vous voulez toujours comparer par nom et ignorer les courriels. Il traite deux contacts différents avec le même nom mais un email différent comme étant égal. Cela peut causer beaucoup de bugs subtils. Il serait probablement préférable si l'email a été comparé des noms sont égaux. – rmaddy
Mon commentaire est à l'OP fournir son tri personnalisé –
ou comparer la description –