Swift在数组中存储字典

时间:2016-08-05 13:23:30

标签: swift xcode

大家好我是swift的新手,我在尝试将字典存储到数组中时遇到错误

在游乐场中运行代码时,它工作正常但是当我将代码放入我的Model类时,我收到错误“实例成员'album1'不能用于'Model'类型”

let album1:[String:String] = ["artist":"michael jackson", "title":"thriller"]
let album2:[String:String] = ["artist":"linkin park", "title":"hybrid theory"]
let album3:[String:String] = ["artist":"of monsters and men", "title":"beneath the skin"]

var albums = [album1,album2,album3]

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

您需要声明数组属性而不使用其他属性

var albums = [[String:String]]()

并将初始化代码移动到类的某个init方法

init() {
    albums = [album1,album2,album3]
}

答案 1 :(得分:1)

我将此代码添加到viewDidLoad并且没有收到任何错误消息,也许您需要将其移动到某种类型的初始化方法。

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.


    let album1:[String:String] = ["artist":"michael jackson", "title":"thriller"]
    let album2:[String:String] = ["artist":"linkin park", "title":"hybrid theory"]
    let album3:[String:String] = ["artist":"of monsters and men", "title":"beneath the skin"]

    let albums = [album1,album2,album3]

    print(albums)


}

答案 2 :(得分:0)

你可以创建struct并存储你的数据。例如:

struct Album {

    // MARK: - Properties

    let artist: String
    let title: String

    // MARK: - Lifecicle

    init(withArtist artist: String, andTitle title: String) {
        self.artist = artist
        self.title = title
    }
}

接下来,您可以将此作为示例:

let album1 = Album(withArtist: "MJ", andTitle: "Thriller")
...

let albums: [Album] = [album1, ...]

与在字典中使用字符串文字相比,它更不容易出错。