Reputation: 131
I have a classe named "whisky builder" which only initiates the new Whisky. Now i would like to add the new added whiskies in my "WhiskyOverViewController". But I face the following problem:
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]()
In the line of "stringArray" I get the error "Instance member 'whiskyArray' cannot be used on type 'WhiskyOverViewController'. Why am I not able to use the whiskyArray-variable there?
Thanks in advance for your help
Upvotes: 2
Views: 3171
Reputation: 236360
What you need there is a read only computed property:
var stringArray: [String] {
return whiskyArray.map{$0.whiskyName!}
}
Upvotes: 6
Reputation: 11555
You need to move this code to a function:
let stringArray = whiskyArray.map({$0.whiskyName!})
Upvotes: 2
Reputation: 1396
The two types must be incompatible with each other. Just like you cannot assign a UIImage to a String, your program won't let you assign a [WhiskyBuilder]
array type to a WhiskyOverViewController
type. You must have declared stringArray
globally, because otherwise Swift would infer its type.
Upvotes: 0