【问题标题】:Storing values in a struct array将值存储在结构数组中
【发布时间】:2016-07-29 04:43:20
【问题描述】:

我有一个包含完整歌曲和歌词的 sqlite 数据库,我正在尝试检索它们并将它们存储在一个数组中。我已经像下面这样声明了数组

struct KArray {
let SongTitle: String
let SongLyrics: String
let ESongTitle: String


func match(string:String) -> Bool {
    let lowerCaseKeyword = string.lowercaseString
    return SongTitle.lowercaseString.containsString(lowerCaseKeyword) || ESongTitle.containsString(lowerCaseKeyword)

    }
}


var keerthanaiArray = [KArray]()

我正在使用从下面的 sqlite 表中读取的值填充数组

keerthanaiArray = [KArray(SongTitle : songTitleT!, SongLyrics : songLyricsT!,
                    ESongTitle : EsongTitleT!)]

但它没有被存储为数组,只存储最后一个条目。请帮忙

【问题讨论】:

  • keerthanaiArray = [KArray(...)] 替换为keerthanaiArray.append(KArray(...))。 – 但是你的名字有误导性,KArray 不是一个数组。

标签: ios arrays swift struct


【解决方案1】:

正如@Martin 提到的,您的KArray 是一个结构,而不是一个数组。

如果您希望 keerthanaiArray 成为包含 KArray 结构值的数组,请尝试以下操作:

var song: KArray  // initialize struct here
var keerthanaiArray = [String]()
keerthanaiArray = [song.SongTitle, song.SongLyrics, song.ESongTitle]

【讨论】:

  • 很抱歉,当您提到“在此处初始化结构”时,我没听懂。能否请您详细说明
  • 您必须为结构中的属性设置值(即 SongTitle、SongLyrics、ESongTitle)才能使其有用。请参阅 this site 上的 Initializers 部分。
  • 我建议在结构内部创建一个自定义初始化程序,您可以从结构外部调用它。
  • 我在 Struct 中包含了下面的 init ~ init(SongTitle: String, SongLyrics:String, ESongTitle: String) { self.SongTitle = SongTitle self.SongLyrics = SongLyrics self.ESongTitle = ESongTitle } ~
  • 但这不起作用..不知道如何用我的表值 songTitleT、songLyricsT、EsongTitleT 填充 keerthanaiArray(这些是从 sqlite 表中检索的)。我需要使用这些值来构造数组
猜你喜欢
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 2019-06-19
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
相关资源
最近更新 更多