拯救和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”]
没有理由调用'synchronize'。 – rmaddy
@rmaddy是的,我认为你是对的。我正要删除它。 –
抱歉,您的输出应该是'Ines,Sevan,Kegham',问题依然存在! –