[英]iOS: How to user a specific function from my swift class in objective C? `Use of undeclared identifier 'NetworkClient'`
I use this code in Swift that works well, but impossible to call it in Objective C.我在 Swift 中使用这段代码运行良好,但无法在 Objective C 中调用它。
import Foundation
import Alamofire
enum Router: URLRequestConvertible {
case users
static let baseURLString = "https://api.stackexchange.com/2.2"
func asURLRequest() throws -> URLRequest {
let path: String
switch self {
case .users:
path = "/users?order=desc&sort=reputation&site=stackoverflow&max=10"
}
let url = URL(string: Router.baseURLString + path)!
return URLRequest(url: url)
}
}
@objcMembers public final class NetworkClient {
// 1
let evaluators = [
"api.stackexchange.com":
PinnedCertificatesTrustEvaluator(certificates: [
Certificates.stackExchange
])
]
let session: Session
// 2
private init() {
session = Session(
serverTrustManager: ServerTrustManager(evaluators: evaluators)
)
} ...
I use it like this under Swift :我在 Swift 下像这样使用它:
NetworkClient.request(Router.users)
.responseDecodable { (response: DataResponse<UserList>) in
switch response.result {
case .success(let value):
self.users = value.users
case .failure(let error):
let isServerTrustEvaluationError =
error.asAFError?.isServerTrustEvaluationError ?? false
let message: String
if isServerTrustEvaluationError {
message = "Certificate Pinning Error"
} else {
message = error.localizedDescription
}
self.presentError(withTitle: "Oops!", message: message)
}
}
I tried this under Objective C with no success:我在 Objective C 下尝试过,但没有成功:
NetworkClient.request.responseDecodable()
{
}
The error message is: Use of undeclared identifier 'NetworkClient'
错误消息是:
Use of undeclared identifier 'NetworkClient'
Any ideas?有任何想法吗? Thanks in advance.
提前致谢。
You need your Swift class to inherit from NSObject
for it to be visible to Objective-C.你需要你的 Swift 类从
NSObject
继承,以便它对 Objective-C 可见。
public final class NetworkClient: NSObject {
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.