ios - 从 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 中然后进行比较)?
解决方案
我认为TableData
是数组,String
并且您正试图在String Array
其中追加。这就是您收到此错误的原因。
你应该这样做,
TableData.append(contentsOf: sortedArray)
推荐阅读
- c++ - 无法在 OS X Big Sur 上编译 c++,“ld: library not found for -lgcc_s.10.4”
- c - 消息队列 - 服务器只响应一种类型的消息
- c# - 服务器端数据表搜索为字符串项返回 NULL
- python - 微调 HuggingFace NLI 模型(RoBERTa/BART)时,损失为“nan”
- c# - 使用 c# 库恢复 azure blob 快照
- python - 类型错误:step() 缺少 1 个必需的位置参数:'y'
- linux - 在Shell脚本中将文件中的字母更改为大写
- javascript - 如何使用字符串与对象文字属性定义类型?
- concurrency - 如何理解两个线程递增和打印一个全局变量的结果?
- r - 在库中找不到 rJava“EXTPR_PTR”过程入口点