问题描述
我正在尝试将一组数据(存储在名为“product”的 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' 总是失败”
这会导致不返回任何数据,并为 productName1
返回 nil,从而导致显示“无数据显示 :(”消息而不是数据。
有人知道我需要为以下行分配哪种类型才能返回此数据吗?
let productName1 = (group_array) as? String
解决方法
您已将 group_array
定义为 Array
。然后您尝试将其转换为字符串。您不能将 Array(甚至是 String 对象的数组)转换为 String。
这一行:
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"] 作为?大批 ?? [""]
致:
让 group_array = document["product"] 作为? [细绳] ?? [""]