我在构建搜索栏时遇到一些问题,搜索我正在构建的项目的工作类型列表。我收到很多红色感叹号说" 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 {
请注意,我之后在程序中也使用了一个选择器。
答案 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
}
}
您提到您正在使用Swift 2,它不再使用您在代码中使用的String initialization方法。有两点不同:
试试这个:(请注意,它不安全,如果无法读取文件,应用会崩溃)
let text2 = try! NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding)