无法将类型为“字符串”的值分配为类型为“ [字符串]”

时间:2020-08-19 12:04:29

标签: swift string core-data casting

我已经做了一些挖掘,但是找不到上面的答案。

这是我的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,该数据已设置为字符串值。 然后,我想将其强制转换为数组,以便可以在表视图中显示它。我尝试了多种转换方式,但没有运气。

有人知道答案吗?

2 个答案:

答案 0 :(得分:3)

问题在这里

destViewController?.item1 = item1Array.name!

更改为

destViewController?.item1 = [item1Array.name!]

或安全

destViewController?.item1 = item1Array.name != nil ? [item1Array.name!] : []

destViewController?.item1 = [item1Array.name].compactMap { $0 }

答案 1 :(得分:1)

一个字符串和一个字符串数组是完全不同的东西。您不能将字符串转换为字符串数组,这没有任何意义。

您显然可以创建一个包含单个字符串的数组。

让您感到困惑的其他事情是:item是ListItem的数组,而itemArray是单个ListItem。那根本没有任何意义。

相关问题