Swift 3插入结构

Swift 3插入结构,swift,struct,swift3,Swift,Struct,Swift3,定义结构 struct songStruct { let artist = String() let title = String() let imgUrl = String() let previewUrl = String() } var songs=[songStruct]() 错误:传递给不带参数的调用的参数 self.songs.insert(songStruct(艺术家:“艺术家”,标题:“标题”,imgUrl:“测试”,预览:“测试”),位于:0)

定义结构

struct songStruct {
    let artist = String()
    let title = String()
    let imgUrl = String()
    let previewUrl = String()
}
var songs=[songStruct]()

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


self.songs.insert(songStruct(艺术家:“艺术家”,标题:“标题”,imgUrl:“测试”,预览:“测试”),位于:0)
问题在于
songStruct
没有接受任何参数的init方法,因为所有变量都被分配了一个空字符串

您只需要更改属性的定义,这样它们就不会被指定默认值

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

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

第二,只有当所有成员没有默认值时,才会创建隐式memberwise初始值设定项:

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
    }
}
为歌曲指定一个空标题(例如)有意义吗?