2015-05-03 33 views
2

我试图访问页面上的数据https://api.myjson.com/bins/4xi1h 但它返回零而不是数据。我不知道为什么。JSON返回零Swift

当我用一些其他JSON API替换URL时,此代码返回数据。

var restUrl: NSURL = NSURL(string: "https://api.myjson.com/bins/4xi1h")! 
let jsonUrlData = NSData (contentsOfURL: restUrl) 
println(jsonUrlData) 


if jsonUrlData != nil{ 
var dictionary : NSDictionary = NSJSONSerialization.JSONObjectWithData(jsonUrlData!, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary 
println(dictionary)} 
+0

我看不到你在哪里试图解析JSON? – Anton

+0

该字典已正确填充,请参阅我的[截图](https://www.evernote.com/shard/s89/sh/8a3e1d89-f402-4279-b0f3-1759be24a3a3/61f49c7e9adbd1358f4285c3b481715a/deep/0/dfsdsdf.playground.png )。我只是不得不使用'as! NSDictionary'而不是'NSDictionary'(注意'!')。那么你肯定有另外一种问题。 – Moritz

+0

@ericd这似乎是一个Swift 1.2错误,OP可能会也可能不会使用。 – AstroCB

回答

0

与MyJSON的连接不安全;尝试访问的API通过HTTP来代替:

var restUrl: NSURL = NSURL(string: "http://api.myjson.com/bins/4xi1h")! 
-1

,需要相应地把结果:

var dictionary = NSJSONSerialization.JSONObjectWithData(jsonUrlData!, 
       options: .MutableContainers, error: nil) as! NSDictionary 

而且,请注意,您的同步API调用可能是一个快速测试适当的,但不是在因为它可能会阻止用户界面。

+0

我不确定这是什么问题;它可能是,但我认为如果OP使用Swift1.2,需要强制downcast(这不是早期版本),那么他/她会注意到Xcode给出的错误,并使用了建议自动修复。相反,API调用看起来不成功,因为'jsonUrlData'等于'nil'。 – AstroCB

0

不要相信操场显示。有时它只是无法正确显示。使用您的XCode进行验证。无论如何,你的代码是确定的,你只需要确定json是一个字典,但不是一个数组(这是因为我看到在你的屏幕截图中转换是可以的)。