拯救和UserDefaults

问题描述:

检索数组排序问题你好我想也一定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 }

但是编译器给我的错误甚至随意!例如值我加入这些项目阵列:



Ç

检索到的数据是:


Ç

有什么不对?我是以正确的方式排列数组?

试试这个 - >。 array = array.sorted {$ 0.localizedCaseInsensitiveCompare($ 1)== NSComparisonResult.OrderedAscending

不要在同一个函数中调用用户的默认值。从另一个函数或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',问题依然存在! –