exc 错误指令代码 exc i386 invop swift with NSArray.



我遇到了"exc 错误的指令代码exc i386 invop"问题。我努力解决这个问题。如果有人知道这个 ping 我...

问题

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("didselect")
if(tableView == self.tabledata){
print("Entered into tableview of listing")
let savearr : NSArray = UserDefaults.standard.object(forKey: "savedarray") as! NSArray
let addarr: NSArray = savearr.value(forKeyPath:"country") as! NSArray
let sumarr: NSArray = savearr.value(forKeyPath:"description") as! NSArray
let titarr: NSArray = savearr.value(forKeyPath:"title") as! NSArray

然后我尝试了以下代码:

if let savearr : NSArray = UserDefaults.standard.object(forKey: "savedarray") as? NSArray
{
let addarr: NSArray = savearr.value(forKeyPath:"country") as! NSArray
let sumarr: NSArray = savearr.value(forKeyPath:"description") as! NSArray
let titarr: NSArray = savearr.value(forKeyPath:"title") as! NSArray    
let MenuViewController = self.storyboard?.instantiateViewController(withIdentifier: "five") as! FiveStepsViewController
MenuViewController.writeTitleString = String(describing: titarr[indexPath.row])
MenuViewController.writeSummaryString = String(describing: sumarr[indexPath.row])
MenuViewController.writeAddressString = String(describing: addarr[indexPath.row])
//MenuViewController.writePriceString = String(describing: self.appDelegate.fivepricearray[indexPath.row])

self.present(MenuViewController, animated: true, completion: nil)
}
else {
print("Error Occured while listing")
}

它总是去其他部分。

当我们尝试强行解开 nil 数据时,通常会出现这种类型的问题。重新检查您的密钥。并尝试按照下面的代码片段所示进行操作。

guard let savearr = UserDefaults.standard.object(forked: "savedArray") as? NSArray,
let addarr = savearr.value(forKeyPath: "country") as? NSArray,
let summer = savearr.value(forKeyPath: "description") as? NSArray,
let titter = savearr.value(forKeyPath: "title") as? NSArray
else { return nil }
let MenuViewController = self.storyboard?.instantiateViewController(withIdentifier: "five") as! FiveStepsViewController   
if let savearr : NSArray = UserDefaults.standard.object(forKey: "savedarray") as? NSArray
{
let addarr: NSArray = savearr.value(forKeyPath:"country") as? NSArray
let sumarr: NSArray = savearr.value(forKeyPath:"description") as? NSArray
let titarr: NSArray = savearr.value(forKeyPath:"title") as? NSArray    

MenuViewController.writeTitleString = String(describing: titarr[indexPath.row])
MenuViewController.writeSummaryString = String(describing: sumarr[indexPath.row])
MenuViewController.writeAddressString = String(describing: addarr[indexPath.row])
}
else {
print("Error Occured while listing")
}
self.present(MenuViewController, animated: true, completion: nil)

在这里我找到了我的解决方案

法典:

if ( titarr.count > 0 ) {
// rest of your code
}

最新更新