为什么rangeOfString返回一个值而不是NSNotFound?

时间:2015-07-14 08:18:32

标签: swift

Debug Image

在上面的屏幕截图中,您可以看到rangeOfString已在字符串“为什么#ThisIsACoup趋势? - BBC新闻”中返回“DEnt”的位置

我希望它返回NSNotFound,因为“DEnt”不是tmp变量中字符串的子字符串。任何人都可以向我解释为什么会这样吗?

以下是截图中使用的代码。

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    filtered = xmlParser.arrParsedData.filter({ (dict) -> Bool in
        let tmp: NSString = dict["title"]!
        let range = tmp.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
        return range.location != NSNotFound
    })
    if(filtered.count == 0) {
        searchActive = false;
    } else {
        searchActive = true;
    }
    self.tableView.reloadData()
}

1 个答案:

答案 0 :(得分:2)

您的屏幕截图显示了range.location =一个巨大的数字。这个巨大的数字是NSNotFound(在64位平台上);它正在做正确的事。