我正在通过swift开发ios app!
我需要通过价格值显示字典顺序数组中的数据。 我该怎么重新排序这个数组
(
{
price = 269600;
userid = "facebook:851661711521620";
},
{
price = 294600;
userid = "facebook:851661711521620";
},
{
price = 1345600;
userid = "facebook:851661711521620";
},
{
price = 287600;
userid = "facebook:851661711521620";
},
{
price = 1344600;
userid = "facebook:851661711521620";
},
{
price = 1343600;
userid = "facebook:851661711521620";
},
{
price = 1333600;
userid = "facebook:851661711521620";
},
{
price = 1332600;
userid = "facebook:851661711521620";
},
{
price = 1322600;
userid = "facebook:851661711521620";
},
{
price = 322600;
userid = "facebook:851661711521620";
},
{
price = 302600;
userid = "facebook:851661711521620";
},
{
price = 300600;
userid = "facebook:851661711521620";
},
{
price = 291600;
userid = "facebook:851661711521620";
},
{
price = 282600;
userid = "facebook:851661711521620";
},
{
price = 299600;
userid = "facebook:851661711521620";
}
)
按价格从最高到最低订购? 我需要显示数据是这样的
任何想法我该怎么办谢谢!
谢谢!
编辑添加一些实际代码。
self.currentBidDict = snapshot.value["current_bid_id"] as! NSDictionary
for(var i = 0;i <= self.currentBidDict.count - 1;i++){
self.currentBidDictReOrder.insertObject(self.currentBidDict.allValues[i], atIndex: 0)
println(self.currentBidDictReOrder)
}
然后在我打印之后我在问题中得到了数组。
答案 0 :(得分:3)
有一个函数sort
,它接受任何序列,并返回一个已排序的数组。由于字典是(key,value)
对的序列,因此您可以将字典传递给排序。
如果你传入的内容不是自然可排序的(即序列的元素是Comparable
,哪些字典不是),你还需要提供一个关闭告诉sort
如何订购要素。在您的情况下,您希望该闭包比较字典中特定键的值。
最后,您希望按值排序,但查找字典中的键会返回一个可选项(因为该键可能不在那里)。但是,这很好!因为可选项具有<
运算符,只要可选包含的内容具有可比性。除此之外,看起来你有一个Any
或AnyObject
的字典(因为你有字符串和整数),所以你必须将它们转换成你可以比较的东西。 / p>
全部放在一起,并且:
sorted(dict) { ($0["price"] as? Int) > ($1["price"] as? Int) }
根据字典实际包含的内容,您可能需要稍微调整一下as?
。此外,我强烈建议您创建一个更强类型的结构并用您的数据填充它,而不是像这样以字典形式保留它。
答案 1 :(得分:2)
您可以通过以下方式使用sort
功能:
var dict = [[
"price" : 1111,
"userid" : "facebook:851661711521620"
],
[
"price" : 12222,
"userid" : "facebook:851661711521620"
],
[
"price" : 144444,
"userid" : "facebook:851661711521620"
]]
// sort by price
dict.sort {
x, y in
let item1 = x["price"] as! Int
let item2 = y["price"] as! Int
return item1 > item2
}
输出应该是这样的:
[[price: 144444, userid: facebook:851661711521620], [price: 12222, userid: facebook:851661711521620], [price: 1111, userid: facebook:851661711521620]]
我希望这对你有所帮助。