2017-05-21 53 views
0

檢索數組排序問題你好我想也一定String添加到一個Array,然後存儲它的值與UserDefaults,這裏是我的代碼:拯救和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) 

    } 

我試圖找回其按升序或降序數據:

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

但是編譯器給我的錯誤甚至隨意!例如值我加入這些項目陣列:



Ç

檢索到的數據是:


Ç

有什麼不對?我是以正確的方式排列數組?

回答

0

試試這個 - >。 array = array.sorted {$ 0.localizedCaseInsensitiveCompare($ 1)== NSComparisonResult.OrderedAscending

0

不要在同一個函數中調用用戶的默認值。從另一個函數或ViewDidLoad調用它。 工作實施例:

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") 

} 

的輸出是:[ 「伊內斯」, 「塞萬」, 「Kegham」]

+0

沒有理由調用'synchronize'。 – rmaddy

+0

@rmaddy是的,我認爲你是對的。我正要刪除它。 –

+0

抱歉,您的輸出應該是'Ines,Sevan,Kegham',問題依然存在! –