【问题标题】:Swift 3 insert structureSwift 3 插入结构
【发布时间】:2016-11-15 20:03:28
【问题描述】:

定义结构

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)

【问题讨论】:

  • 给歌曲分配一个空的(例如)标题有意义吗?

标签: swift struct swift3


【解决方案1】:

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

您只需要更改属性的定义,使其不会被分配默认值。

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

【讨论】:

    【解决方案2】:

    首先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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多