Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 引用由另一个函数创建的数组_Ios_Arrays_Swift_Function_Reference - Fatal编程技术网

Ios 引用由另一个函数创建的数组

Ios 引用由另一个函数创建的数组,ios,arrays,swift,function,reference,Ios,Arrays,Swift,Function,Reference,我有下面的结构 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 = ESo

我有下面的结构

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中引用此数组


但我无法这样做,因为数组在其自身功能之外无法识别。如何在另一个函数中读取此数组。请帮助

将数组声明为全局数组。在您的计算机上,code
keerthaniarray
是一个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))
            }
        }
    }
}

您可以使用上述方法将默认值设置为空字符串。这样可以避免
致命错误:在展开可选值时意外发现nil问题。

将数组声明为全局数组。在您的计算机上,code
keerthaniarray
是一个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))
            }
        }
    }
}


您可以使用上述方法将默认值设置为空字符串。因此,您可以避免
致命错误:在展开可选值时意外发现nil问题。
为什么不将该数组用作该类的全局数组。如何将该数组声明为全局数组。我无法成功声明。请帮助您的
keerthaniarray
不是数组–它是
KStruct
。听起来你只是想在你的班上。顺便说一句,属性名和参数标签应该是
lowerCamelCase
,而不是
UpperCamelCase
。我正在读取一个包含标题、歌词、etitle的数据库文件,并尝试在循环中填充此数组。我做得不对吗?为什么不使用数组作为该类的全局数组。如何将数组声明为全局数组。我无法成功声明。请帮助您的
keerthaniarray
不是数组–它是
KStruct
。听起来你只是想在你的班上。顺便说一句,属性名和参数标签应该是
lowerCamelCase
,而不是
UpperCamelCase
。我正在读取一个包含标题、歌词、etitle的数据库文件,并尝试在循环中填充此数组。我做得不对吗?我正在尝试在viewdidload函数中加载数组。我将在哪里声明类ArrayClass?如果我在viewdidload函数之外声明,那么我将无法引用变量songTitleT!,抒情歌曲!还有埃松提特!因为这些变量是通过读取viewdidload函数类ArrayClass中的数据库来填充的,所以ArrayClass只是一个示例。您应该在填充数组的viewdidload()对应的视图控制器类中声明Keerthaniarray。请查看编辑后的答案。谢谢,现在我没有编译错误,现在当我运行代码时,我在Keerthaniarray.append语句中得到了错误“致命错误:在展开可选值时意外发现零”:(songTitleT、songLyricsT和EsongTitleT与一个“!”,因此,它们中的任何一个都可以有一个nil。这就是您得到错误的原因。如果我删除!则我会得到错误“可选字符串'string'的值?”未展开;您是想使用“!”还是“?”我正在尝试在viewdidload函数内加载数组。我将在何处声明类ArrayClass?如果我在viewdidload函数外声明,则我将无法引用变量songTitleT!、songLyricsT!和EsongTitleT!,因为这些变量是通过读取viewdidload函数类ArrayC内的数据库来填充的lass只是一个示例。您应该在填充数组的viewdidload()对应的视图控制器类中声明Keerthaniarray。请查看编辑后的答案。谢谢,现在我没有编译错误,现在当我运行代码时,我收到错误“致命错误:在展开可选值时意外发现nil”在Keerthaniarray.append语句中:(songTitleT、songLyricsT和EsongTitleT与“!”一起使用,因此它们中的任何一个都可以有一个nil。这就是您得到错误的原因。如果我删除!则我得到错误“可选字符串‘string’的值未展开;您是想使用“!”还是“?”