这是我正在使用的结果类型的缩短版本:
public enum Result<Value> { case Success(Value) case Failure(NSData?,ErrorType)}
所以对于我的API调用,我在完成块中使用它:
func getUserContent(userID: String,completion: (result: Result<User>) -> VoID) { Alamofire.request(UserRouter.GetUser(userID)) .valIDate() .responseJsON { (request,response,result) -> VoID in switch result { case .Failure(_,let error): completion(result: .Failure(nil,error)) case .Success(let value): if let responseDict = value as? [String: AnyObject] { do { // synchronous call which parses response and // creates User struct instance or throws exception let user = try self.processUserResponse(responseDict) completion(result: .Success(user)) } catch(let error) { completion(result: .Failure(nil,error)) } } else { completion(result: .Failure(nil,MyAPIError.WrongResponseFormat)) } } }}
我认为它非常适合这里,但有一个问题.我有一些带有完成块的调用,它们应该返回.没有值的成功或失败.
例如. deleteUser方法应该类似于:
func deleteUser(userID: String,completion: (result: Result<nil>) -> VoID) { // ... do some stuff here }
所以当我稍后打电话给我时,我可以这样做:
deleteUser(userID) { (result) -> VoID in switch result { case .Success: print("success") case .Failure(nil,let error): print("Error: \(error)") } }
但我不能创造“空”.成功.结果<零>当然给了我一个编译错误.但我没有任何类型可以传递给某些.Success案例.有没有人有更好的解决方案,在.Success上定义另一个没有类型的结果类型?
解决方法 @ogreswamp是对的!您可以使用VoID省略类型要求.类型VoID只是一个空元组,实际上是一个零元素的元组,可以写成().这是一个例子:enum Result<T,E: ErrorType> { case Success(T) case Failure(E) init(value: T) { self = .Success(value) } init(error: E) { self = .Failure(error) }}
使用它就像
enum AuthenticationError: ErrorType { case MissingEmail case InvalIDPassword}func signUp(email email: String,password: String) -> Result<VoID,AuthenticationError>
你可以返回结果
// Successreturn Result(value: ())// Failurereturn Result(error: .InvalIDPassword)
最后,检查结果
switch result {case .Success(_): print("Request SignUp was sent")case .Failure(let error): switch error { case .InvalIDEmail: print("InvalID email") default: break }}总结
以上是内存溢出为你收集整理的ios – 如何使用Alamofile的标准结果类型,没有成功的类型?全部内容,希望文章能够帮你解决ios – 如何使用Alamofile的标准结果类型,没有成功的类型?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)