Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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和PromiseKit返回承诺<;[T] >;_Swift_Alamofire_Promisekit - Fatal编程技术网

Swift Alamofire和PromiseKit返回承诺<;[T] >;

Swift Alamofire和PromiseKit返回承诺<;[T] >;,swift,alamofire,promisekit,Swift,Alamofire,Promisekit,我使用Alamofire和PromiseKit作为单独的Cocoapod安装。我可以使用Alamofire检索JSON数据,但在配置PromiseKit时收到以下错误。下面的错误出现在“完成,拒绝”所在的行中 错误消息:上下文闭包类型“(解析器)->Void”需要1个参数,但闭包正文中使用了2个参数 我在模拟器内部使用Xcode 9.2和IOS 11.2。提前感谢您的建议 func wantToReturnAnArrayOfActor() -> Promise<[Acto

我使用Alamofire和PromiseKit作为单独的Cocoapod安装。我可以使用Alamofire检索JSON数据,但在配置PromiseKit时收到以下错误。下面的错误出现在“完成,拒绝”所在的行中

错误消息:上下文闭包类型“(解析器)->Void”需要1个参数,但闭包正文中使用了2个参数

我在模拟器内部使用Xcode 9.2和IOS 11.2。提前感谢您的建议

      func wantToReturnAnArrayOfActor() -> Promise<[Actor]> {
    return Promise { fulfill, reject in
        Alamofire.request(ApiUrl.url.rawValue).responseJSON { (response) in
            switch(response.result)
            {
               case .success(let responseString): print("my response string = \(responseString)")
               let actorResponse = ActorApiResponse(JSONString: "\(responseString)")//converts all of the data into the ActorApiResponse model class
              return when(fulfilled: actorResponse)
              DispatchQueue.main.async {
                print("actorResponse = \(String(describing: actorResponse))")
                }

               case .failure(let error): print("alamofire error = \(error)")

            }
        }

    }
}
func wantToReturnAnArrayOfActor()->Promise{
返回承诺{履行,拒绝
请求(apirl.url.rawValue).responseJSON{(响应)在
开关(response.result)
{
case.success(让responseString):打印(“我的响应字符串=\(responseString)”)
让actorResponse=ActorApiResponse(JSONString:\(responseString)//将所有数据转换为ActorApiResponse模型类
完成时返回(完成:actorResponse)
DispatchQueue.main.async{
打印(“actorResponse=\(字符串(描述:actorResponse)))
}
case.failure(let error):打印(“alamofire error=\(error)”)
}
}
}
}

如果是这样

func wantToReturnAnArrayOfActor() -> Promise<[Actor]> {

    return Promise() { resolver in

        Alamofire.request(ApiUrl.url.rawValue).responseJSON { (response) in
            switch(response.result)
            {
            case .success(let responseObject):
                let actorResponse = ActorApiResponse(jsonObject: responseObject)
                let actors = actorResponse.getActors()
                resolver.fulfill(actors)

            case .failure(let error):
                resolver.reject(error)

            }
        }

    }
}
struct ActorApiResponse {
    init(jsonObject: Any) {

    }

    func getActors() -> [Actor] {
        // calculate and return actors
        return []
    }
}
然后,你可以从其他地方调用它

    wantToReturnAnArrayOfActor().done {
       // do something with [Actor here]
       // You can also chain the multiple promise using .then instead of using done
        }.catch { error in
            print("Error occurred \(error)")
    }

Sandeep,非常感谢您的回复!我正在使用ObjectMapper将JSON数据与我的模型相关联。我可以通过print()看到数据,但我收到了以下错误:error Domain=NSCocoaErrorDomain Code=3840“字符6附近的对象中的值没有字符串键。”UserInfo={NSDebugDescription=字符6附近的对象中的值没有字符串键。}