Ios Can';不要在Alamofire中使用公共枚举
我有以下代码:Ios Can';不要在Alamofire中使用公共枚举,ios,swift,alamofire,Ios,Swift,Alamofire,我有以下代码: import Alamofire extension Alamofire.Request { public func responseObject<T: ResponseJSONObjectSerializable>(completionHandler:(NSURLRequest?,NSHTTPURLResponse?, Result<T>) -> Void) -> Self { let responseSerializer = Generi
import Alamofire
extension Alamofire.Request {
public func responseObject<T: ResponseJSONObjectSerializable>(completionHandler:(NSURLRequest?,NSHTTPURLResponse?, Result<T>) -> Void) -> Self {
let responseSerializer = GenericResponseSerializer<T> { request, response, data in
guard let responseData = data else {
let failureReason = "Object could not be serialized because input data was nil."
let error = Error.errorWithCode( .DataserializableFailed, failureReason: failureReason)
//Error: Type of expression is ambiguous without more context
return .Failure(data, error)
}}}
如果我把code
放在.dataserializablefiled
前面,它会说:使用未解析标识符“code”
怎么了 显然你的大写字母/拼写不同。它应该是
.DataSerializationFailed
,而不是.dataserializablefiled
或者您可以参考
Error.code.DataSerializationFailed
@Rob问题已解决,谢谢!但是我想知道为什么在我把.code
放在.DataSerializationFailed
之前时仍然有bug。你可以引用完全限定值Error.code.DataSerializationFailed
,或者如果可以推断类型Error.code
,你可以使用“点语法”,只引用枚举值,例如。,.DataSerializationFailed
。虽然如果编译器能够推断出您所说的.code.DataSerializationFailed
,这可能是一种优雅的方式,但它没有这样做并不奇怪。
public struct Error {
public enum Code: Int {
case InputStreamReadFailed = -6000
case OutputStreamWriteFailed = -6001
case ContentTypeValidationFailed = -6002
case StatusCodeValidationFailed = -6003
case DataSerializationFailed = -6004
case StringSerializationFailed = -6005
case JSONSerializationFailed = -6006
case PropertyListSerializationFailed = -6007
}
}