我正在使用 Alamofire 快速进行网络处理,但遇到了一个奇怪的错误。看来我们无法传递 方法 枚举作为参数。
[方法参数出现错误]
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)
}
}
}
您必须指定从中查找对象类型的模块。 致电
Alamofire.Method
可能存在名称冲突。要解决这个问题,您可以使用
enum
的限定名称(包括模块名称):
private func apiRequest(method: Alamofire.Method, ...
我也遇到过这个问题,因为我声明了多个同名的协议:
protocol SomeProtocol {
static func someTypeMethod()
}
protocol SomeProtocol {
init(someParameter: Int)
}
protocol SomeProtocol {
var mustBeSettable: Int { get set }
var doesNotNeedToBeSettable: Int { get }
}
在使用“Moya”和桥接 c 框架时出现此错误冲突,通过隐式添加
Moya.Method
模块来修复它。
var method: Moya.Method {
switch self {
case .login: return .post
case .register: return .post
}
}
类型
Method
在两个导入的模块中声明。您必须指定要使用该类型的模块。使用 Alamofire.Method
代替 Method
。
提示:如果您经常使用该类型,您可以在模块(应用程序)中创建类型别名:
typealias Method = Alamofire.Method
这样您就不再需要在类型前添加
Alamofire.
前缀。
虽然这个答案确实修复了构建错误;就我而言,显示警告的文件位于两个不同的框架中,因此 Xcode 不知道在哪里查找。这不是我们内部框架的预期行为,因此我只是删除了我不再需要的副本。
您可以在应用程序的两个或多个位置声明一个类。该错误表明没有确定的方法来使用此类,因为声明它的代码中有几个不同的位置。
Swift 4 和 Alamofire 4.7
将
HTTPMethod
替换为 Alamofire.HTTPMethod
我收到此错误,因为我的数据库表名称和模型类名称相同...通过重命名模型类名称解决了问题。
我通过手动删除 pods 项目中的 Alamofire 文件夹成功解决了该问题。然后,我执行“pod install”来重新安装丢失的 pod。
执行此操作后,Alamofire 文件夹中的文件明显减少。
将枚举类型名称更改为不同的 &...
$(inherited)
标志,或目标->构建设置->ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES,值类型为Boolean,点击其他,将值改为$(inherited) 执行-pod更新 完成
然后尝试运行您的项目,错误就会消失! (我在我的项目中尝试过)
枚举 'XYZ'ButtonType {
}
我之所以这样做是因为我的核心数据模型(xcdatamodel)中的一个 NSManagedObject 实体的
Codegen
值为 Class definition
并且我还手动生成/创建 NSManagedObject 代码。所以最终该实体有两个重复的定义。