如何返回 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" 键中的 numberOfRows
func 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?的主要内容,如果未能解决你的问题,请参考以下文章

js 如何创建带返回值的函数

Android开发如何点击物理返回键返回上个界面

请问Ajax如何获取回调函数的返回值?

请求正常时如何返回json对象,SpringBoot失败时如何返回json错误对象

如何获取AsyncTask 异步处理的返回值

如何在 Pycharm 中输入提示“不返回的返回类型”