首页 > 解决方案 > 从 JSON 数组更新表,但按字母顺序排序会导致 Swift 3 中的错误

问题描述

在我的 iOS 应用程序中,我从外部 json 文件填充了一个表。现在效果很好,我遇到的问题是我需要按字母顺序对表格进行排序。

我添加了一个比较方法,打印它会给我正确的输出(由他们组织的结果列表show_name)。但是,当我尝试将这些结果附加到表中时,出现错误。

这是我的代码:

func extract_json(_ data: Data)
{
    let json: Any?
    do{
        json = try JSONSerialization.jsonObject(with: data, options: [])
    }
    catch{
        return
    }

    guard let data_list = json as? NSArray else {
        return
    }

    if let shows_list = json as? NSArray
    {
        for i in 0 ..< data_list.count
        {
            if let shows_obj = shows_list[i] as? NSDictionary
            {
                let show_name = shows_obj["show"] as? String
                let show_image = shows_obj["thumbnail"] as? String
                TableData.append(show_name!)
                var sortedArray = TableData.sorted { $0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedAscending }
                print(sortedArray)

如果我将 更改TableData.append(show_name!)TableData.append(sortedArray),我会收到错误“无法转换 '[String] 类型的值?” 到预期的参数类型“字符串””。

有没有一种更安全/更智能的方法可以在将我的 json 数组加载到表中之前按属性对其进行字母排序(而不是像现在一样尝试将其加载到 TableData 中然后进行比较)?

标签: iosswift

解决方案


我认为TableData是数组,String并且您正试图在String Array其中追加。这就是您收到此错误的原因。

你应该这样做,

TableData.append(contentsOf: sortedArray) 

推荐阅读