2016-11-15 44 views
-2

定义的结构斯威夫特3插入结构

struct songStruct { 
    let artist = String() 
    let title = String() 
    let imgUrl = String() 
    let previewUrl = String() 
} 

var songs = [songStruct]()

错误:参数传递给调用不带任何参数

self.songs.insert(songStruct(artist: "artist", title: "title", imgUrl: "test", previewUrl: "test"), at: 0)

+0

给歌曲分配一个空的(例如)标题是否有意义? – Alexander

回答

2

问题是songStruct没有一个init方法接受任何参数,因为所有的变量都被分配了一个空字符串。

你只需要改变你的属性的定义,所以他们没有被分配一个默认值。

struct songStruct { 
    let artist: String 
    let title: String 
    let imgUrl: String 
    let previewUrl: String 
} 
1

首先SongStruct应该以大写字母开头。

其次所有的隐性按成员初始化的只是创建如果所有成员有默认值:

struct SongStruct { 
    let artist : String 
    let title : String 
    let imgUrl : String 
    let previewUrl : String 
} 

否则,你必须把它自己添加,但是属性必须被声明为var

struct SongStruct { 
    var artist = "" // shorter syntax than String() 
    var title = "" 
    var imgUrl = "" 
    var previewUrl = "" 

    init(artist: String, title: String, imgUrl: String, previewUrl: String { 
     self.artist = artist 
     self.title = title 
     self.imgUrl = imgUrl 
     self.previewUrl = previewUrl 
    } 
}