问题描述
我已经做了一些挖掘,但是找不到上面的答案。
这是我的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。那根本没有任何意义。