使用UserDefaults排序保存和检索数组的问题

时间:2017-05-21 14:09:51

标签: ios arrays swift nsuserdefaults

您好我正在尝试向String添加一些Array,然后将其值存储为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:

  

一个
  乙
  ç

检索到的数据是:

  


  ç
  甲

有什么问题?我是以正确的方式对数组进行排序的?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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")

}
  

输出为:[“Ines”,“Sevan”,“Kegham”]