iOS Swift:tblSearchResults未解析的标识符,无法调用String(contentsOfFile ...)

时间:2016-03-15 19:35:59

标签: ios swift

我在构建搜索栏时遇到一些问题,搜索我正在构建的项目的工作类型列表。我收到很多红色感叹号说" tblSearchResults"是一个未解决的标识符。

以下是发生问题的项目源代码。

    func WorkTypeSearchable() {

    let pathToFile = NSBundle.mainBundle().pathForResource("work", ofType: "txt")

    if let path = pathToFile {

        let workString = String(contentsOfFile: path, encoding:
NSUTF8StringEncoding, error: nil)!

        let WorkTypeSearchable = workString.componentsSeparatedByString("\n")

        tblSearchResults.reloadData()
    }
}

你能解释为什么我会收到一个错误作为一个未解决的标识符,以及我的字符串错误#34; workString = String(code)......

我正在使用所见的所有相应类:

class ViewController: UIViewController, UIPickerViewDataSource,
UIPickerViewDelegate, UITableViewDelegate, UITableViewDataSource,
UISearchResultsUpdating, UISearchBarDelegate {

请注意,我之后在程序中也使用了一个选择器。

1 个答案:

答案 0 :(得分:0)

未解决的标识符错误表示Xcode无法找到您定义的位置tblSearchResults。您是否连接了IBOutlet并初始化了委托?单独实现委托不会导致tblSearchResults指向您想要的UITableView。

要创建IBOutlet,请打开“助手编辑器”,然后从“UITableView”中按住Control键并拖到类声明的正下方,将类型更改为“Outlet”,将名称更改为tblSearchResults。然后,您可能还想在viewDidLoad()中初始化委托和dataSource,如下所示:

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate, UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating, UISearchBarDelegate {
    @IBOutlet weak var tblSearchResults: UITableView!
    override func viewDidLoad() {
        tblSearchResults.delegate = self
        tblSearchResults.dataSource = self
        //Insert other initialization code here
    }
}

String Init:Swift 1 vs. Swift 2

您提到您正在使用Swift 2,它不再使用您在代码中使用的String initialization方法。有两点不同:

  1. 您必须使用NSString而不是String
  2. 您必须使用try语句
  3. 试试这个:(请注意,它不安全,如果无法读取文件,应用会崩溃)

    let text2 = try! NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding)