swift - 为什么我会收到“从 '[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
解决方案
您已定义group_array
为Array
. 然后您尝试将其转换为字符串。您不能将数组(甚至是字符串对象数组)转换为字符串。
这一行:
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? [细绳] ??[""]
推荐阅读
- c++ - C++ 为什么在尝试读取表单文件并分离成不同的变量时会发生这种情况?
- sql-server - SQL Server Profiler 中的主机名和应用程序是什么意思
- php - 如何在 PHP 中将 cron 表达式从本地时区转换为 UTC
- ubuntu - 卷曲错误无法解决我的主机问题,但可以通过 google 解决
- javascript - UnhandledPromiseRejectionWarning:未处理的承诺拒绝 - API
- javascript - 按下输入时如何在标签上插入新行
- angular - 如何订阅 Angular 中路由参数的更改?
- php - 我想在整个 html 表单中获取 PHP 中的值
- python - 从列表中写入 csv 文件,但并非所有元素都跟进
- python - ValueError:在使用互相关时,对象对于所需数组来说太深了