我正在使用Swift创建一个iOS应用程序,它使用一些Web服务来获取一些信息。具体来说,我使用food2fork API来获取一些食谱。我遇到的问题是,如果我在大学连接到互联网,网络电话将始终返回错误,即使我知道我已通过电话连接到互联网。我认为这个错误与网络如何处理安全网站有关,但我不确定。
我没有正确使用NSURL吗?有没有更好的方法来确保我的网络电话始终返回应用所需的数据?这是功能:
func getRecipeByID(recipeId: String, sendTo: RecipeInfoViewController)
{
let theURLAsString = "http://food2fork.com/api/get?key=[MY KEY]&rId=" + recipeId
let theURL = NSURL(string: theURLAsString)
let theURLSession = NSURLSession.sharedSession()
let theJSONQuery = theURLSession.dataTaskWithURL(theURL!, completionHandler: {data, response, error -> Void in
if(error != nil)
{
print(error!)
}
do
{
let theJSONResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
if theJSONResult.count > 0
{
let theRecipeDictionary = theJSONResult["recipe"] as? NSDictionary
sendTo.setRecipeInfo(theRecipeDictionary!)
}
} catch let error as NSError {
print(error) //The function always gets here on certain networks
}
})
theJSONQuery.resume()
}
打印(错误)行输出的错误是:
错误域= NSCocoaErrorDomain代码= 3840“JSON文本未启动 使用数组或对象以及允许未设置片段的选项。“ UserInfo = {NSDebugDescription = JSON文本不是以数组或 允许片段未设置的对象和选项。}
答案 0 :(得分:0)
如果您正在运行iOS 9,则需要通过向Info.plist添加密钥来禁用该域的App Transport Security。否则,您将无法建立非HTTPS连接。