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

时间:2015-11-05 11:38:41

标签: swift alamofire

我正在使用Alamofire在swift中进行网络处理并遇到一个奇怪的错误。好像我们不能将 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)
        }
    }
}

11 个答案:

答案 0 :(得分:76)

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

答案 1 :(得分:11)

可能存在名称冲突。要解决此问题,您可以使用enum的限定名称(包括模块名称):

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

答案 2 :(得分:6)

我也遇到过这个问题,因为我已声明了许多相同的协议名称:

protocol SomeProtocol {
   static func someTypeMethod()
}

protocol SomeProtocol {
   init(someParameter: Int)
}

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

答案 3 :(得分:2)

在使用“ Moya”并桥接c框架时,发生了此错误冲突,请通过隐式添加Moya.Method模块来解决此问题。

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

Swift 4和Alamofire 4.7

HTTPMethod替换为Alamofire.HTTPMethod

答案 6 :(得分:0)

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

答案 7 :(得分:0)

类型Method在两个导入的模块中声明。您必须指定要使用该类型的模块。使用Alamofire.Method代替Method

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

typealias Method = Alamofire.Method

这样您就不需要再为Alamofire.添加类型前缀。

答案 8 :(得分:0)

将枚举类型名称更改为其他&...

  • 使用$(inherited)标志,或
  • 从目标中删除构建设置。

目标->建筑物设置-> ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES,值类型为布尔值,单击另一个,将值更改为$(继承) 执行-吊舱更新 完成

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

枚举'XYZ'ButtonType {

}

答案 9 :(得分:0)

出现此错误是因为我的数据库表名称和模型类名称相同...问题是通过重命名模型类名称来解决的。

答案 10 :(得分:0)

我设法通过手动删除pods项目中的Alamofire文件夹来解决此问题。然后,我执行“ pod安装”以重新安装缺少的pod。

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