2017-05-21 1 views
0

Bonjour, Je suis en train aussi ajouter un peu String à un Array puis stocker ses valeurs avec UserDefaults, voici mon code:Problème avec l'enregistrement et la récupération de tableau avec Tri UserDefaults

func addStored(urlString:String) { 

     //Add URL to array and save it 
     downloadedURLArray.append(urlString) 

     UserDefaults.standard.set(downloadedURLArray, forKey: "storedURL") 
     UserDefaults.standard.synchronize() 

     var array = UserDefaults.standard.array(forKey: "storedURL") as? [String] ?? [String]() 
     array = array.sorted { $0 < $1 } 
     print(array.description) 

    } 

Je suis en train de récupérer ses données par ordre croissant ou décroissant:

array = array.sorted { $0 < $1 }

Mais compilateur me donnent mal ou même au hasard !!! Les valeurs par exemple je suis l'ajout de ces article à matrice:

A
B
C

les données récupérées sont:

B
C
A

Qu'est-ce qui ne va pas? Je suis je trier le tableau de la bonne façon?

Répondre

0

Essayez ceci ->. array = array.sorted {$ 0.localizedCaseInsensitiveCompare ($ 1) == NSComparisonResult.OrderedAscending

0

N'appelez pas les valeurs par défaut de l'utilisateur à l'intérieur de la même fonction. Appelez-le à partir d'une autre fonction ou ViewDidLoad. Exemple de travail:

var downloadedURLArray = [String]() 

override func viewDidLoad() { 

    addStored(urlString: "Kegham") 
    addStored(urlString: "Sevan") 
    addStored(urlString: "Ines") 

    var array = UserDefaults.standard.array(forKey: "storedURL") as? [String] ?? [String]() 
    array = array.reversed() 
    print(array.description) //output 

} 


func addStored(urlString:String) { 

    //Add URL to array and save it 
    downloadedURLArray.append(urlString) 

    UserDefaults.standard.set(downloadedURLArray, forKey: "storedURL") 

} 

La sortie est: [ "Ines", "Sévan", "Kegham"]

+0

Il n'y a aucune raison d'appeler 'synchronize'. – rmaddy

+0

@rmaddy oui je pense que vous avez raison. J'allais l'enlever. –

+0

Désolé mais votre sortie devrait être 'Ines, Sevan, Kegham', Le problème existe toujours! –