【问题标题】:How to use function outside of its class如何在其类之外使用函数
【发布时间】:2016-11-30 20:59:40
【问题描述】:

我有以下类,我使用函数匹配来搜索SongTitleESongTitle 中的字符串。

class KeerthanaiArray: NSObject {
var SongTitle: String = String()
var SongLyrics: String = String()
var ESongTitle: String = String()

init(SongTitle: String, SongLyrics:String, ESongTitle: String) {
    self.SongTitle = SongTitle
    self.SongLyrics = SongLyrics
    self.ESongTitle = ESongTitle
}

func match(string:String) -> Bool {
    return SongTitle.containsString(string) || ESongTitle.containsString(string)
}
}

我无法在其类之外使用函数匹配,所以我尝试使用以下逻辑:

for keerthanaiArrayObject in keerthanaiArray {
        let searchr = (keerthanaiArrayObject.match(searchText.lowercaseString))} 

但现在我无法在其 for 循环之外引用 searchr。请协助引用这些函数。

【问题讨论】:

    标签: arrays swift function class search


    【解决方案1】:

    你能把 searchr 改为 var 吗?如,在 for 循环外定义它,然后在 for 循环内重新分配它。

    类似这样的:

    var searchr: Bool?
    
    for keerthanaiArrayObject in keerthanaiArray {
        searchr = (keerthanaiArrayObject.match(searchText.lowercaseString))    
    }
    

    另外,请注意:您的 KeerthanaiArray 的名称具有误导性。您的对象应该是单个项目,而不是数组。我建议您将名称更改为 Keerthanai,然后当您需要 Keerthanai 对象列表时,可以将它们包装在一个数组中。

    像这样。

    var keerthanaiArray = [keerthanaiObject1, keerthanaiObject2, keerthanaiObject3]
    

    【讨论】:

    • 当我将搜索器声明为 Bool 时,我的进一步代码不起作用。我有以下代码 self.searchResults = searchr.filter({(searchr) -> Bool in
    • 现在它给了我“布尔”类型的错误消息值?没有成员“过滤器”
    • 等一下,你的代码就没有意义了。您的 Match 函数返回一个布尔值,对吗?然后在此行中将其分配给searchrlet searchr = (keerthanaiArrayObject.match(searchText.lowercaseString)) 所以searcher 是 Bool 类型,过滤器不能用于布尔值,只能用于数组和映射。
    • 你到底想在self.searchResults = searchr.filter({(searchr) -> Bool in 做什么?
    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 2016-08-17
    相关资源
    最近更新 更多