我在我的应用程序中实现了一个UITableViewController。除了TableView中各部分的顺序外,一切正常。
每个部分中的部分数和行数都可以。我从服务器获取一些值并在TableView中显示它们。它们按日期排序,每个部分包含与该日期相关的值。
现在,如果我有昨天(2014年11月11日)和今天(2014年11月12日)的价值,我的iPhone 6将首先显示12.11.2014部分。在iPhone 5上,首先显示11.11.2014部分 - 但它是相同的代码!我不知道如何解决这个问题。
这是2个截图,所以你知道我的意思:
iPhone 5截图
iPhone 6屏幕截图
在第二张屏幕截图中,首先显示12.11.2014。
编辑:
我的TableView显示最新的比特币交易。我有一个NSMutableDictionary,它有两个条目(在我的例子中),一个条目为“12.11.2014”,一个条目为“11.11.2014”,所以我的 numberOfSections -method返回2.
var trades : NSMutableDictionary!
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return trades.count
}
现在,该字典中的每个条目都包含一个交易列表,因此我的字典类型只是:
String : [Trade]
所以我的 numberOfRowsInSection 看起来像这样(我知道这有点棘手):
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (self.trades.objectForKey((self.trades.allKeys as NSArray).objectAtIndex(section) as String)! as [Trade]).count
}
就像我说的,在iPhone 6上它运行良好,在iPhone 5上没有。
答案 0 :(得分:5)
您正在存储"部分" NSDictionary
中的数据。
NSDictionary
是一个无序集合。没有" order"在NSDictionary中。说订单改变没有意义。
如果您想将内容存储在字典中并以相同的顺序将它们输出,那么您需要先对键数组self.trade.allKeys
进行排序,然后才能解决问题。
这样做并不是不同的设备。您可能会发现它也会在单个设备上发生变化。
更好(不同)的方法是使用NSArray来存储数据。
喜欢这个......
//self.allTrades array...
[
{
title : 11.11.2014,
trades : //array of trades for 11.11.2014
},
{
title : 12.11.2014,
trades : //array of trades for 12.11.2014
}
]
现在您可以通过...来访问某个部分的交易信息。
self.allTrades[indexPath.section]
并访问一个项目......
// 1. 2. 3.
self.allTrades[indexPath.section]["trades"][indexPath.row]
// 1. get the dictionary from the array for the section
// 2. then get the trades array from that dictionary
// 3. then get the item from that array.
答案 1 :(得分:0)
好了,现在我添加了一些代码行,现在效果很好。我正在排序我的字典的键(字符串)。
func sortDictionaryKeys(dict : NSDictionary) -> NSMutableArray {
var sortedKeys = (dict.allKeys as NSArray).sortedArrayUsingSelector("compare:")
var retArray = NSMutableArray()
for var i = sortedKeys.count-1; i > 0; i-- {
retArray.addObject(sortedKeys[i])
}
return retArray
}
我必须“反转”for-Loop,以便日期按降序排序,以便最新的交易位于TableView之上。
在对键进行排序后,我通过存储在 sortedKeys 数组中的键访问我的[Trade]列表。这不是@Fogmeister发布的解决方案,但他给了我一个NSDictionary根本没有排序的提示 - NSArray 排序。
感谢您的帮助!