Error : Command failed due to signal : Segmentation fault: 11

Error : Command failed due to signal : Segmentation fault: 11

我正在尝试从字典中获取一个数组,但我收到以下行的错误

self.items = self.dataDictionary["geoNames"] as NSArray

完整代码如下

var dataDictionary: AnyObject!
var items: NSArray!

override func viewDidLoad() {
    super.viewDidLoad()

    var url = NSURL(string: "http://api.geonames.org/countryInfoJSON?username=temp")
    var urlRequest = NSURLRequest(URL: url!)

    NSURLConnection.sendAsynchronousRequest(urlRequest, queue:NSOperationQueue(), completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in

        if (data.length > 0 && error == nil){
            self.dataDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil)
            println(self.dataDictionary)
            self.items = self.dataDictionary["geoNames"] as NSArray
        }
    })
}

您的代码存在一些问题:

  1. 您的代码甚至无法编译。段错误来自编译器,而不是运行时

  2. 您应该将 JSONObjectWithData 的结果转换为 NSDictionary,不赋值给AnyObject!

  3. 类型的变量
  4. 应该使用 if 检查转换是否有效

  5. 字典关键字错误。即geonames(全部小写)

功能代码如下:

var url = NSURL(string: "http://api.geonames.org/countryInfoJSON?username=temp")
var urlRequest = NSURLRequest(URL: url!)

NSURLConnection.sendAsynchronousRequest(urlRequest, queue:NSOperationQueue(), completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in

    if (data.length > 0 && error == nil){
        if let jsonObject = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSDictionary {

            let dataDictionary = jsonObject["geonames"]
            println(dataDictionary)

        }

    }
})

这发生在我身上是因为我错误地创建了一个 if 语句。非常非常简单的错误,我只是漏掉了一个键,却造成了天壤之别。:

if textBox?.characters.count = 0{
    //...
}

相反,我需要做的是:

if textBox?.characters.count == 0{
    //...
}

一个假设: 如果编辑器 - 由于某种原因 - 无法解析您的代码并对代码的正确性做出结论,它可能允许您编译甚至如果您有语法错误,这可能会导致您描述的错误。

由于语法错误,我收到了这个错误。也就是说,我正在将一维数组更改为二维数组,但忘记更新它初始化的一些地方。

编辑器似乎无法准确指出错误所在,当我尝试编译时,我得到了你描述的错误。我怀疑编辑器发生了一些奇怪的事情,因为它在全白和彩色语法之间闪烁,并在编辑器顶部抛出 "An internal error happened" 错误消息。

因此,如果您遇到此错误,请手动仔细检查您的代码或一项一项地撤消您的更改,直到您到达可以成功编译的阶段,这可能会给您提示哪里出了问题。

发帖是因为它可能对面临类似问题的人有所帮助。

我在安装 cocoapod 时遇到了同样的错误,并注意到我的 Foundation.framework 不再被识别。看看我在这里 on this thread 的回答,它解决了我的问题。希望这对某人有帮助。

如果您不想访问 link,只需 运行

sudo gem install cocoapods

如果您怀疑过时的 cocoa pods 给您的框架带来麻烦,请更新 pods