首页 > 解决方案 > 为什么我会收到“从 '[String]' 转换为不相关的类型 'String' 总是失败”错误?

问题描述

我正在尝试将一组数据(存储在名为“产品”的 Firestore 数据库字段中)显示到 UITableViewController 中。我目前用来尝试将数组返回到我的应用程序的代码如下:

if userId == user?.uid {               
   let group_array = document["product"] as? Array ?? [""]
    let productName1 = (group_array) as? String
      self.tableViewData =[cellData(opened: false, title: "Item 1", sectionData: [productName1 ?? "No data to display :("])]
   }

当我运行它时,它会编译,但是我目前收到以下警告消息:

从 '[String]' 转换为不相关类型 'String' 总是失败”</p>

这导致没有数据被返回,并且返回 nil productName1,从而导致“没有数据显示:(”消息被显示而不是数据。

有谁知道我需要为以下行分配哪种类型才能返回此数据?

let productName1 = (group_array) as? String

标签: swiftuitableviewuikit

解决方案


您已定义group_arrayArray. 然后您尝试将其转换为字符串。您不能将数组(甚至是字符串对象数组)转换为字符串。

这一行:

let productName1 = (group_array) as? String

总会失败。

你在寻找什么结果?字符串数组中的第一个条目?将数组中的所有元素组合在一起的字符串?

如果您想要第一个元素,请使用

let productName1 = group_array.first as? string ?? ""

如果要组合这些项目,请使用以下内容:

let productNames = (group_array as? [String])?.joined(separator: ", ") ?? ""

顺便说一句,如果您将数组转换为字符串数组,而不仅仅是通用数组(任意数组),您的代码会更简洁

改变:

让 group_array = document["product"] as? 大批 ??[""]

至:

让 group_array = document["product"] as? [细绳] ??[""]


推荐阅读