【发布时间】:2018-09-11 13:37:37
【问题描述】:
我想将部分标题显示为一月、二月、三月(根据数据来自 api),而不是显示一月、三月、二月。
我正在从后端 api 获取这些数据。
wholeDic : NSDictionary = {
January = (
{
date = "20-jan-18";
subtitle = "Only four days remaining";
title = "School fees of August, 2018School fees of August, 2018";
},
{
date = "21-jan-18";
subtitle = Holi;
title = "Holiday on third march";
}
);
february = (
{
date = "20-feb-18";
subtitle = "Paricipate in this activity";
title = "Annual function will be held in feb,2018";
},
{
date = "20-12-18";
subtitle = "Holiday issue by Govt. of India";
title = "Bharat Band";
}
);
march = (
{
date = "20-feb-18";
subtitle = "Paricipate in this activity";
title = "Annual function will be held in feb,2018";
},
{
date = "20-feb-18";
subtitle = "Paricipate in this activity";
title = "Annual function will be held in feb,2018";
}
);}
现在我已经获取“key”并添加到数组中
for (key, value) in wholeDic{
sectionTitleArray.add(key)
print(sectionTitleArray)
}
当我打印sectionTitleArray 时,控制台显示January, March, February 而不是显示January, February, March。
我知道 Dictionary 是一个无序集合,但我想知道如何按顺序获取键?
我的 UitableView 数据源和委托是
func numberOfSections(in tableView: UITableView) -> Int{
return sectionTitleArray.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let sectionTitle : String = sectionTitleArray.object(at: section) as! String
let sectiondes:NSArray = wholeDic.object(forKey: sectionTitle) as! NSArray
return sectiondes.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "cell"
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! frameNboundTableViewCell
let sectionTitle : String = sectionTitleArray.object(at: indexPath.section) as! String
let contentArr : NSArray = wholeDic.object(forKey: sectionTitle) as! NSArray
let contentDic : NSDictionary = contentArr.object(at: indexPath.row) as! NSDictionary
print(contentDic)
cell.titleLbl.text = contentDic.value(forKey: "title") as? String
cell.titleLbl.numberOfLines = 0
return cell
}
【问题讨论】:
-
api 响应问题。您不会同时获得相同的密钥序列。而是使用一月:字典使用数组。
-
那么如果api响应是一月、三月、四月,你会显示二月吗?
-
@George:-不需要显示二月。我想像一月、二月和三月一样按顺序获取所有键。但是当我在数组中添加键时,它显示一月、三月、 2 月。我必须在 uitableview 中将所有键显示为标题(按照 api 数据序列的顺序名称)。请查看我共享的图像。
-
@SagarBhut : - 我认为 api 响应没有任何问题。我每次都得到相同的数据。请查看我共享的图像并提出一些建议。
-
如果 api 响应像二月、一月、四月、三月你想如何在 UI 中显示?是二月、一月、四月、三月还是一月、二月、三月、四月?
标签: ios swift uitableview nsdictionary indexpath