错误:由于信号命令失败:分段错误:11

时间:2015-02-14 05:26:28

标签: swift nsarray xcode6.1.1

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

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
        }
    })
}

4 个答案:

答案 0 :(得分:2)

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

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

似乎编辑无法确切地指出错误的位置,当我尝试编译时,我得到了您描述的错误。我怀疑编辑器正在进行一些时髦的事情,因为它在全白和彩色语法之间闪烁,然后抛出"发生内部错误"编辑器顶部的错误消息。

因此,如果您遇到此错误,请手动仔细检查您的代码或逐个撤消更改,直到您进入可以成功编译的阶段,这可能会给您一些错误的提示。

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

答案 1 :(得分:2)

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

如果您不想访问该链接,只需运行

即可
XSSFRichTextString richString = new XSSFRichTextString();
richString.append("azerty");
richString.append("test", highlightFont);
richString.append("qwerty");
cell.setCellValue(richString);  

如果您怀疑过时的可可豆荚给您带来框架问题,请更新豆荚

答案 2 :(得分:1)

您的代码存在一些问题:

  1. 您的代码甚至无法编译。 Segfault来自编译器,而非运行时

  2. 您应该将结果从JSONObjectWithData转换为 NSDictionary,未分配给AnyObject!

  3. 类型的变量
  4. 应使用if检查投射是否有效

  5. 字典键错误。它是geonames(全部小写)

  6. 以下是功能代码:

    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)
    
            }
    
        }
    })
    

答案 3 :(得分:0)

这发生在我身上,因为我不情愿地创建了一个if语句。非常非常简单的错误,我错过了一个关键,但造成了一个世界的差异。:

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

我需要这样做:

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