实例成员不能用于自定义类的类型

时间:2016-07-29 05:27:37

标签: swift instances

我有一个名为“威士忌建造者”的classe,它只启动新的威士忌。现在我想在我的“WhiskyOverViewController”中添加新添加的威士忌。但我面临以下问题:

class WhiskyOverViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!

var whiskyArray = [WhiskyBuilder]()
let stringArray = whiskyArray.map({$0.whiskyName!})
var whiskies = [Character: [String]]()
var objectsArray = [Object]()

在“stringArray”的行中我得到错误“Instance member'swokyArray'不能用于'WhiskyOverViewController'类型。为什么我不能在那里使用whiskyArray变量?

提前感谢您的帮助

3 个答案:

答案 0 :(得分:5)

您需要的是只读计算属性:

var stringArray: [String] { 
    return whiskyArray.map{$0.whiskyName!} 
}

答案 1 :(得分:2)

您需要将此代码移动到一个函数:

let stringArray = whiskyArray.map({$0.whiskyName!})

答案 2 :(得分:0)

这两种类型必须互不兼容。就像您无法将UIImage分配给String一样,您的程序也不会让[WhiskyBuilder]数组类型分配给WhiskyOverViewController类型。您必须全局声明stringArray,否则Swift会推断其类型。