在viewController
我已将SB中的tableView outlet
与代理和数据源集相关联,当我在代码中访问参考插座时,它总是与消息崩溃:
致命错误:在解包可选值时意外发现nil
以下是代码:
@IBOutlet var resultTabView: UITableView!
连接:
cellForRowAtIndexPath:
-
我甚至没有使用resultsArray,尽管数组正在返回日志中所见的数据
编辑2:
数据:
id = 2325;
results = (
{
city = Delhi;
company = "AIR CREATOR";
country = IN;
date = "Mon, 11 Jul 2016 04:51:34 GMT";
expired = 0;
formattedLocation = "Delhi, Delhi";
formattedLocationFull = "Delhi, Delhi";
formattedRelativeTime = "30+ days ago";
jobkey = 67ba422cc328a946;
jobtitle = "CSA for airport";
latitude = "28.664835";
longitude = "77.21429000000001";
onmousedown = "indeed_clk(this,'3586');";
snippet = "Providing boarding passes and luggage <b>labels</b>. Your daily tasks will usually include:....";
source = Indeed;
sponsored = 0;
state = DL;
url = "http://www.indeed.co.in/viewjob?jk=67ba422cc328a946&qd=SHSUhPNSBYpqaNu9AVdfqv81wDpAwFE36uyNVXcxl8VAUThqIJkZA1l3w1yQl8AJg05AJq_aODrwRlOUKXT92UBk4SDqDqM7LhTReglYsV0&indpubnum=4148406673078092&atk=1aqbfaj6kb958c17";
},
{
city = Delhi;
company = "Letmedrive India Private Limited";
country = IN;
date = "Wed, 10 Aug 2016 13:02:51 GMT";
expired = 0;
formattedLocation = "Delhi, Delhi";
formattedLocationFull = "Delhi, Delhi";
formattedRelativeTime = "6 days ago";
jobkey = 89c4f63f1b841720;
jobtitle = "Graphics Designer";
latitude = "28.664835";
longitude = "77.21429000000001";
onmousedown = "indeed_clk(this,'3586');";
snippet = "Graphic designers/artists design graphics for use in media products such as magazines, <b>labels</b> & advertising....";
source = Indeed;
sponsored = 0;
state = DL;
url = "http://www.indeed.co.in/viewjob?jk=89c4f63f1b841720&qd=SHSUhPNSBYpqaNu9AVdfqv81wDpAwFE36uyNVXcxl8VAUThqIJkZA1l3w1yQl8AJg05AJq_aODrwRlOUKXT92UBk4SDqDqM7LhTReglYsV0&indpubnum=4148406673078092&atk=1aqbfaj6kb958c17";
};
上课:
class JobListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate{
@IBOutlet var searchField: UITextField!
@IBOutlet var resultTabView: UITableView!
var resultsArray = [JSON]()
var resultsDictionary = [String:String]()
override func viewDidLoad() {
super.viewDidLoad()
}
func focusSearchField(search:Bool, keyword:String){
if(search){
callAPI(keyword)
}else{
searchField?.becomeFirstResponder()
}
}
func callAPI(keyword:String){
var params = [String:String]()
params["publisher"] = "2341411"
params["q"] = keyword
params["l"] = "dubai"
params["latlong"] = "1"
params["v"] = "2"
params["format"] = "json"
params["co"] = "uae"
let svcMgr = ServiceManager()
svcMgr.httpRequest(self, params: params)
}
func updateUI(result: [String:AnyObject]){
if let val = result["results"] {
let json = JSON(val)
let array = json.arrayValue
dispatch_async(dispatch_get_main_queue(), {
for a in array{
self.resultsArray.append(a)
}
self.resultTabView.reloadData()
})
}else{
}
}
// MARK: - Table view data source
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return resultsArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("JobCell", forIndexPath: indexPath) as UITableViewCell
let labl2 = cell.viewWithTag(2) as! UILabel
labl2.text = (resultsArray[indexPath.row]["jobtitle"].stringValue)+" @"+(resultsArray[indexPath.row]["source"].stringValue)
let labl3 = cell.viewWithTag(3) as! UILabel
labl3.text = (resultsArray[indexPath.row]["state"].stringValue)+", "+(resultsArray[indexPath.row]["country"].stringValue)
let labl4 = cell.viewWithTag(4) as! UILabel
labl4.text = (resultsArray[indexPath.row]["snippet"].stringValue)+" "
tableView.estimatedRowHeight = 80
tableView.rowHeight = UITableViewAutomaticDimension
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
UIApplication.sharedApplication().openURL(NSURL(string: resultsArray[indexPath.row]["url"].stringValue)!)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - TextField delegate
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
callAPI(textField.text!)
return true
}
答案 0 :(得分:0)
按照以下步骤
请删除与表格视图的所有连接,然后重新添加。
确保tableViewCellIdentifier在故事板中设置的名称与代码中的名称相同。
删除&#34;!&#34;在AnyObject之后标记,我相信你需要这个
var resultsArray =(val as?[AnyObject])
这不是表视图重装错误,它的解析问题。请检查所有声明属性。如果可能,请显示所有表格视图数据源方法。
答案 1 :(得分:0)
确保在尝试访问表视图之前调用table1
方法。此代码运行时可能无法建立您与XIB的连接。