Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 无法使用alamofire打印json值_Swift_Alamofire_Flickr_Swifty Json - Fatal编程技术网

Swift 无法使用alamofire打印json值

Swift 无法使用alamofire打印json值,swift,alamofire,flickr,swifty-json,Swift,Alamofire,Flickr,Swifty Json,我试图用flickr API获取数据,我用Alamofire和swiftyJSON编写了一个简单的代码,从flickr获取数据,但我可以打印数据大小,但当我尝试打印json时,我的catch块会运行。我的代码如下所示 func getPhotos(completion: @escaping CompletionHandler) -> Void { let parameter: [String: Any] = [ "method": PHOTOS_M

我试图用flickr API获取数据,我用Alamofire和swiftyJSON编写了一个简单的代码,从flickr获取数据,但我可以打印数据大小,但当我尝试打印json时,我的
catch
块会运行。我的代码如下所示

func getPhotos(completion: @escaping CompletionHandler) -> Void {

        let parameter: [String: Any] = [
            "method": PHOTOS_METHOD,
            "api_key": FLICKR_API_KEY,
            "per_page": PER_PAGE,
            "page": PAGE,
            "format": FORMAT_TYPE,
            "nojsoncallback": JSON_CALLBACK]

        Alamofire.request(FLICKR_URL, method: .get, parameters: parameter, encoding: JSONEncoding.default, headers: HEADER).responseString { (response) in

            if response.result.error == nil {

                guard let data = response.data else {return}

                do {
                    if let json = try JSON(data: data).array {
                        print(json)
                    }
                    completion(true)
                } catch {
                    print("eroorrrre")
                    completion(false)
                }

                print("CALL CORRECT")
                print(data)

                completion(true)
            }
            else {
                completion(false)
                debugPrint(response.result.error as Any)
            }
        }
    }
我的控制台日志

eroorrrre
CALL CORRECT
128 bytes
我不确定我在这里做错了什么,任何帮助都会被感激的

试试这个

Alamofire.request(FLICKR_URL, method: .get, parameters: parameter, headers: HEADER).responseJSON { response in // call responseJSON instead of responseString

    if response.result.isSuccess { // If http request is success

        let json: JSON = JSON(response.result.value!) // JSON format from SwiftyJSON (I suppose you are using it)

        guard let data = json.array else { // You suppose that json is array of objects
            print("Unexpected JSON format")
            completion(false)
        }

        print(data) 
        completion(true)

    } else {
        print(response.error)
        completion(false)
    }
}

永远不要打印无意义的文本字符串,如catch子句中的
eroorrre
,请打印
error
实例。最有可能的是,它显示了你在这里做错了什么。如果出现错误,您将调用
completion
两次。不要这样做。注意到谢谢我会更正谢谢,这很好,但我的代码不起作用的原因是什么?我一直在使用它,而且它一直都是works@King在您的案例中,response.data对于JSONhi的格式不正确,请帮助检查此问题