5

我想用 nil 履行承诺,但我收到错误消息,我不能在这里是我的代码

public static func getCurrentDevice() -> Promise<Device>{
    if let identity:[String:AnyObject] = auth?.get("identity") as! [String:AnyObject] {
        if let uuididentity = identity["uuid"]{
         return Promise { fulfill, reject in
            Alamofire.request( Router.getDevice(uuididentity as! String) )
                .responseObject { (response: Response<Device, NSError>) in
                    switch response.result{
                    case .Success(let data):
                        fulfill(data)
                    case .Failure(let error):
                        return reject(error)
                    }
            }
        }
    }
}
return Promise { fulfill, reject in
        fulfill(nil)
    }
}

我收到编译器错误 无法使用类型为“((,_)-> _)”的参数列表调用类型“Promise< >”的初始化程序

4

2 回答 2

5

如果承诺没有返回值,您应该使用()aka Void

return Promise { fulfill, reject in
    fulfill(())
}

如果这不起作用(我没有测试它)你可以尝试注释它:

return Promise<()> { fulfill, reject in
    fulfill(())
}

(请注意,这()()aka类型的唯一值Void

于 2016-07-06T00:21:54.633 回答
0

干得好。问号在方法的返回中为您提供。

public static func getCurrentDevice() -> Promise<Device?> {
        //... logic here
        let isDeviceEmpty: Bool

        if isDeviceEmpty {
            fulfill(nil)
        } else {
            fulfill(device)
        }
    }
于 2017-05-08T07:40:07.670 回答