如何解决无法将类型为“字符串”的值分配为类型为“ [字符串]”
我已经做了一些挖掘,但是找不到上面的答案。
这是我的ListViewControllerCode:
import UIKit
class ListsViewController: UITableViewController {
let viewController = ListNameViewController()
let rootVC = RootListsViewController()
let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext
var item1 = [ListItem]()
override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
let indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow! as NSIndexPath
let destViewController = segue.destination as? RootListsViewController
var item1Array : ListItem
item1Array = item1[indexPath.row]
destViewController?.item1 = item1Array.name!
}
}
这是我的RootListViewController代码(我也在其中传递值):
import UIKit
import CoreData
class RootListsViewController: UITableViewController {
var titleName = ""
var newListItem : String = ""
let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext
var item1 = [String]()
//other code...
}
因此,我了解到数据item1.name来自CoreData,该数据已设置为字符串值。 然后,我想将其强制转换为数组,以便可以在表视图中显示它。我尝试了多种转换方式,但没有运气。
有人知道答案吗?
解决方法
问题在这里
destViewController?.item1 = item1Array.name!
更改为
destViewController?.item1 = [item1Array.name!]
或安全
destViewController?.item1 = item1Array.name != nil ? [item1Array.name!] : []
或
destViewController?.item1 = [item1Array.name].compactMap { $0 }
,
一个字符串和一个字符串数组是完全不同的东西。您不能将字符串转换为字符串数组,这没有任何意义。
您显然可以创建一个包含单个字符串的数组。
让您感到困惑的其他事情是:item是ListItem的数组,而itemArray是单个ListItem。那根本没有任何意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。