如何返回 numberOfRowsInSection?
Posted
技术标签:
【中文标题】如何返回 numberOfRowsInSection?【英文标题】:How to return numberOfRowsInSection? 【发布时间】:2018-06-22 06:50:54 【问题描述】:我真的需要帮助,因为我是 Swift 新手。我遇到了一个问题,我找不到返回 numberOfRowsInSection
的方法场景:
我从sectionArray返回的tableview中有3个numberOfSections,如下:
"mbsdcie6_2_1": "Incomer 132 KV Parameters",
"mbsdcie6_2_2": [
3,
6,
4,
5,
8,
30,
31,
7,
18,
29,
1
]
,
"mbsdcie6_2_1": "SMS2 Parameters",
"mbsdcie6_2_2": [
9,
10,
11,
12,
13,
14
]
,
"mbsdcie6_2_1": "SMS 1 Parameters",
"mbsdcie6_2_2": [
15,
17
]
]
使用上面的数组,我可以像这样返回 numberOfSections:
func numberOfSections(in tableView: UITableView) -> Int
return self.sectionArray.count
但是,如何使用 sectionArray 返回 numberOfRowsInSection ??
注意:
我想要 sectionArray
的 "mbsdcie6_2_2" 键中的 numberOfRowsfunc tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if section == 0
return "numberOfRows" // What to return here?
if section == 1
return "numberOfRows"
if section == 2
return "numberOfRows"
return 0
编辑 1
这就是我将数据添加到 sectionArray 中的方式:
// 来自另一个webservice,所以我把它添加到userdefaults中。
让 headers = swiftyJSonVar["message"][0]["mbsdcie6"]["mbsdcie6_2"].arrayObject
kUserDefault.set(headers, forKey: kHeadersArray)
// 在我的另一个 ViewController 中,我正在这样检索它:
var sectionArray = [Dictionary<String, Any>]()
override func viewWillAppear(_ animated: Bool)
sectionArray = kUserDefault.array(forKey: kHeadersArray) as! [Dictionary<String, Any>]
print(sectionArray)
我知道这可能很愚蠢,而且它太容易了,但不知何故我被困住了,因为我是新手。 任何帮助将不胜感激,谢谢!
【问题讨论】:
只存储所有三个数组而不是传递计数数组值 请添加代码如何在sectionarray中添加数组数据 看来sectionArray
其实是个字典。
【参考方案1】:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if !sectionArray.isEmpty
let sectionContent = sectionArray[section]["mbsdcie6_2_2"] as? [Int]
return sectionContent.count
else
return 0
【讨论】:
【参考方案2】:func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if sectionArray.indices.contains(section),
let sectionContent = sectionArray[section]["mbsdcie6_2_2"] as? [Int]
return sectionContent.count
else
return 0
【讨论】:
对不起!我没有投反对票。但我想要这个键“mbsdcie6_2_2”的 numberOfRows。 我确实贬低了你。您的解决方案完全是错误的。 现在检查一下...我没有阅读整个问题..@Desdenova【参考方案3】:试试这个:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
let singleSection = self.sectionArray[section]
if let rows = singleSection["mbsdcie6_2_2"] as? [Int]
return rows.count
else
return 0
【讨论】:
谢谢,但它会给出这样的警告:从 '[String : Any]' 到 '[String : Any]' 的条件转换总是成功。但是,代码有效!以上是关于如何返回 numberOfRowsInSection?的主要内容,如果未能解决你的问题,请参考以下文章