swift - 为什么这个排序算法会失败?
问题描述
我开发了以下算法来对字典项数组进行排序。
guard var imageUrlString = anyImage.value as? [String:AnyObject] else { return }
var values = [AnyObject]()
var keys = [String]()
var done = false
var j = 1
while !done {
for i in imageUrlString {
print(i.key, " this is the key")
if "media\(j)" == i.key {
values.append(i.value)
keys.append(i.key)
print(i, " This is teh i for in if ")
if imageUrlString.count == j {
done = true
break;
}
j+=1
} else {
print("No,,.")
}
}
}
问题是有时,例如,每次第一个媒体是图像时,它都会永远循环。我该如何解决这个问题,以便算法可以在所有条件下有效地排序?
解决方案
看起来你真的在创建两个并行数组:keys
和values
.
我开始创建这两个数组,排序。这是一个例子
var imageUrlString = [String: AnyObject]()
imageUrlString["media3"] = "whatever 3 content" as AnyObject
imageUrlString["media7"] = "whatever 7 content" as AnyObject
imageUrlString["media1"] = "whatever 1 content" as AnyObject
let keys = Array(imageUrlString.keys).sorted()
var values = [AnyObject]()
keys.forEach {
values.append(imageUrlString[$0]!)
}
print(keys)
print(values)
推荐阅读
- google-apps-script - 在 Google 表格中,为什么我录制的宏在调用时还会运行另外两个脚本?
- reactjs - 如何在反应 + 材料中检查表格是否有效?
- symfony - 独白发送旧日志
- asp.net - 访问 linux 托管的 ASP.NET Core 2.x webapp(无 nginx)
- javascript - 使用 Grunt 观察和编译 TypeScript
- azure-devops - 如何将文件从自托管 VM 下载到 VSTS
- excel - 索引数据组
- python - Python Kivy Plots 与 MeshLinePlot 混淆
- php - 想用codeigniter连接sql数据库
- c# - Unity Facebook sdk 在 iPhone 设备上不起作用