gpt4 book ai didi

json - 由于信号 : Segmentation fault: 11 due to TableViewController?,命令失败

转载 作者:行者123 更新时间:2023-11-30 10:05:30 26 4
gpt4 key购买 nike

在我的“DictionaryTableViewController:UITableViewController”类中,我定义了以下变量:

var dataObj : [String: AnyObject]!
var letters : Int!
var currentSection : Int!;
var currentRow : Int!

在“viewDidLoad”中我有:

    let jsonUrl = NSBundle.mainBundle().URLForResource("dictionary", withExtension: "json")
var data = NSData(contentsOfURL: jsonUrl!)
func dataReturn(object: [String: AnyObject]) {
dataObj = object
letters = object["collection"]!.count
}

do {
let object = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
if let dictionary = object as? [String: AnyObject] {
dataReturn(dictionary)
}
} catch {
// Handle Error
}

这是我从 NSBundle 中提取的 JSON 文件的基本结构

    {
"collection": [{
"letter": "A",
"words": [{
"word" : "Apple",
"definition" : "Tasty fruit"
}]
},{
"letter": "B",
"words": [{
"word" : "Banana",
"definition" : "Meh, not bad."
}]
},{
"letter": "C",
"words": [{
"word" : "Carrots",
"definition" : "hooock twooo!"
}]
}]
}

所以现在当我去设置 tableView 单元格的样式时,我相信这就是导致此错误的原因:

Command failed due to signal: Segmentation fault: 11

  1. While emitting SIL for 'tableView' at /Users/me/Desktop/.../DictionaryTableViewController.swift:70:14

作为警告,我在更新到 xcode 7.3 后才遇到此问题。这个问题在 7.2 中不存在

第 70 行,从错误所在处开始读取:

Line 70: override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
//let currentSelection = dataObj["collection"]![indexPath.section]["words"]!![indexPath.row]!
let currentSelection = dataObj["collection"]![indexPath.section]["words"]!![indexPath.row]!!!
cell.textLabel?.text = currentSelection["word"] as? String
cell.detailTextLabel?.text = currentSelection["definition"] as? String
return cell
}

注意:上面代码中注释掉的行在 xcode 7.2 中可以正常工作。 Xcode7.3 给了我一个语法错误(下标的使用不明确)。注释掉的行下面的代码是我的更改,不会产生语法错误。这是导致我的问题的原因吗?我在这里真的很茫然,似乎找不到答案。任何帮助表示赞赏!

最佳答案

出于调试目的,我会将该行与所有强制解包的选项分解为一系列保护语句,如下所示:

guard let collection = dataObj["collection"] else { fatalError("collection is nil") }

guard let words = collection[indexPath.section]["words"] else { fatalError("words is nil") }

guard let word = words[indexPath.row] else { fatalError("word is nil") }

无论如何,类似的东西会告诉您这些强制解包的选项之一是否导致了问题。

关于json - 由于信号 : Segmentation fault: 11 due to TableViewController?,命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com