“方法”在此上下文中对于类型查找是不明确的,“ Alamofire 错误”

我正在使用 Alamofire 的网络处理迅速,并运行到一个奇怪的错误。似乎我们不能将 方法枚举作为参数传递。< br > [错误在 Method 参数上]

enter image description here

private func apiRequest(method: Method, url: String, apiData: [String : AnyObject], completion:(finished: Bool, response: AnyObject?) ->Void) {


Alamofire.request(method, url, parameters: apiData).responseJSON{ response in
if let JSON = response.result.value {
completion(finished: true, response: JSON)
} else {
completion(finished: false, response:nil)
}
}
}
66245 次浏览

您必须指定要从中查找对象类型的模块。 打电话给 Alamofire.Method

可能有名字冲突。要解决这个问题,可以使用 enum的限定名(包括模块名) :

private func apiRequest(method: Alamofire.Method, ...

虽然这个问题的答案确实修复了构建错误; 在我的例子中,显示警告的文件位于两个不同的框架中,因此 Xcode 不知道去哪里查看。这不是我们内部框架的预期行为,所以我只是删除了我不再需要的副本。

您可以在应用程序的两个或多个位置声明一个类。错误在于没有确定的方法来使用这个类,因为在声明它的代码中有两个不同的位置。

我也遇到了这个问题,因为我声明了一些相同的协议名称:

protocol SomeProtocol {
static func someTypeMethod()
}


protocol SomeProtocol {
init(someParameter: Int)
}


protocol SomeProtocol {
var mustBeSettable: Int { get set }
var doesNotNeedToBeSettable: Int { get }
}

类型 Method在两个导入的模块中声明。您必须指定要从中使用类型的模块。使用 Alamofire.Method而不是 Method

提示 : 如果经常使用该类型,可以在模块(应用程序)中创建类型别名:

typealias Method = Alamofire.Method

这样,您就不再需要使用 Alamofire.作为类型的前缀了。

Swift 4和 Alamofire 4.7

HTTPMethod替换为 Alamofire.HTTPMethod

将枚举类型名称更改为 different & ..。

  • 使用 $(inherited)标志,或者
  • 从目标中删除生成设置。

目标-> 构建设置-> ALWAYS _ EMBED _ SWIFT _ STANDARD _ LIBRARIES,值类型为 Boolean,单击另一个,将值更改为 $(继承) 执行舱更新 成交

然后尝试运行您的项目,错误将消失! (我已经尝试在我的项目)

枚举‘ XYZ’按钮类型{

}

我得到这个错误,因为我的数据库表名和模型类名是相同的... 问题通过重命名模型类名来解决。

在使用“ Moya”和连接 c 框架时出现了这个错误冲突,通过隐式添加 Moya.Method模块修复了这个错误。

var method: Moya.Method  {
switch self {
case .login: return .post
case .register: return .post
}
}

我设法通过手动删除 Pods 项目中的 Alamofire 文件夹来解决这个问题。然后,我做一个“吊舱安装”来重新安装丢失的吊舱。

执行此操作后,Alamofire 文件夹中的文件明显减少。