我正试图从字典中获取一个数组,但在行下的出现错误
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
}
})
}
假设:如果编辑器由于某种原因无法解析您的代码并对代码的正确性做出结论,那么即使您有语法错误,它也可能允许您进行编译,这可能会导致您描述的错误。
我收到这个错误是因为语法错误。也就是说,我将1D阵列更改为2D阵列,但忘记更新它初始化的一些位置。
编辑似乎无法准确地指出错误所在,当我尝试编译时,我得到了你所描述的错误。我怀疑编辑器发生了一些奇怪的事情,因为它在全白色和彩色语法之间闪烁,并在编辑器顶部抛出"发生内部错误"错误消息。
因此,如果你有这个错误,手动重新检查你的代码或逐个撤销你的更改,直到你到达可以成功编译的阶段,可能会给你一个错误的提示。
发帖是因为它可能对面临类似问题的人有所帮助。
我在安装cocoapod时遇到了同样的错误,并注意到我的Foundation.framework停止被识别。看看我在这个帖子上的回答,它解决了我的问题。希望这能帮助到别人。
如果你不想访问链接,只需运行
sudo gem install cocoapods
如果您怀疑过时的可可荚会给您的框架带来麻烦,请更新pods
您的代码有一些问题:
-
您的代码甚至不会编译。Segfault来自编译器,而不是运行时
-
您应该将
JSONObjectWithData
的结果强制转换为NSDictionary
,不分配给AnyObject!
类型的变量 -
应使用
if
检查铸件是否工作 -
字典的钥匙错了。它是
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{
//...
}