2016-07-30 168 views
1

我有下面結構參考將其通過另一函數創建一個數組

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

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

    } 
} 

我轉換此作爲數組和我在viewDidLoad中功能填充此陣列中的環像下面

let keerthanaiArray = KStruct(SongTitle : songTitleT!, SongLyrics : songLyricsT!, 
            ESongTitle : EsongTitleT!) 

現在我想請參閱此數組中的另一個功能filterContentForSearchText

不過,我不能這樣做,因爲數組沒有自己的本功能的外部識別離子。我如何在另一個函數中讀取這個數組。請幫助

+0

爲什麼不使用該類作爲該類的全局數組。 – Shad

+0

如何將數組聲明爲Global。我無法成功申報。請幫助 – Jebus

+0

您的'keerthanaiArray'不是一個數組 - 它是一個'KStruct'。聽起來你只是想在你的課堂上[聲明一個屬性](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html)。順便說一下,屬性名稱和參數標籤應該是'lowerCamelCase',而不是'UpperCamelCase'。 – Hamish

回答

0

聲明數組爲全局數組。在你的代碼keerthanaiArray是一個KStruct類型的對象,而不是一個數組。看一看下面:

var keerthanaiArray:[KStruct]! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    if KeerthanaigalDB.open() 
    { 
     var i = 0 
     let querySQL = "SELECT * FROM KEERTHANAIGAL ORDER BY ROWID DESC" 
     let results:FMResultSet? = KeerthanaigalDB.executeQuery(querySQL, withArgumentsInArray: nil) 
     if (results != nil) 
     { 
      while results!.next() 
      { 
       let songTitleT = results?.stringForColumn("SONGNAME") as? String ?? "" 
       arrayData1.append(songTitleT!) 
       let songLyricsT = results?.stringForColumn("SONGLYRICS") as? String ?? "" 
       arrayData2.append(songLyricsT!) 
       let EsongTitleT = results?.stringForColumn("ESONGNAME") as? String ?? "" 


       keerthanaiArray.append(KStruct(SongTitle : songTitleT, SongLyrics : songLyricsT, 
        ESongTitle : EsongTitleT)) 
      } 
     } 
    } 
} 

您可以用上面的方法有空字符串的默認值。所以你可以避免fatal error: unexpectedly found nil while unwrapping an Optional value問題。

+0

我想加載viewdidload函數內的數組。我將在哪裏聲明類ArrayClass?如果我在我的viewdidload函數之外聲明,那麼我將無法引用變量songTitleT!,songLyricsT!和EsongTitleT!因爲通過讀取viewdidload函數中的數據庫來填充這些變量 – Jebus

+0

類ArrayClass僅僅是一個示例。你應該在你正在填充數組的viewdidload()的相應視圖控制器類中聲明你的keerthanaiArray。請參閱編輯的答案。 – Shad

+0

謝謝我現在沒有編譯錯誤,現在當我運行代碼時,在keerthanaiArray.append語句中出現錯誤「致命錯誤:意外地發現零,同時展開可選值」:( – Jebus

相關問題