【发布时间】:2020-07-02 12:50:48
【问题描述】:
我目前正在开发将所有网络与我的后端封装在一起的 SDK。我尝试根据UML制作一个类:
但在共享实例方面遇到了困难。我想这是一个单例实例,我做了一个像:
public class MIDNetwork {
/// Class sigleton instance
static public let sharedManager:MIDNetwork = MIDNetwork()
但我不明白为什么我不能通过共享实例调用类的方法。我在测试项目中导入我的静态库并尝试调用这样的方法:
func handleRequest() {
self.request = MIDNetwork.sharedManager.
}
这是我的课:
public class MIDNetwork {
/// Class sigleton instance
public static let sharedManager:MIDNetwork = MIDNetwork()
/// A network session
private var networkSession:URLSession = URLSession(configuration: .default)
///baseUrl is represented as an API endpoint
private static var baseUrl:URL = URL(string: "")!
// TODO: - Somehow figure out a client url
private var clientUrl:URL {
return self.clientUrl
}
func createRootIdentity(requestDataMode:MIDCreateRootIdentityRequest, handler: @escaping (APIResult<MIDIdentity>) -> Void) -> URLSessionTask? { }
func createDerivedIdentity(requestDataMode:MIDCreateDerivedIdentityRequest, handler: @escaping (APIResult<MIDDerivedIdentity>) -> Void) -> URLSessionTask? { }
func faceCheck(requestDataMode:MIDFaceCheckRequest, handler: @escaping (APIResult<MIDFaceCheckResult>) -> Void) -> URLSessionTask? { }
func getIdentityAdditionalInfo(derivedIdentityID:String, handler: @escaping (APIResult<MIDDerivedIdentityAdditionalInfo>) -> Void) -> URLSessionTask? { }
}
我尝试使用 public 标记方法,但之后出现错误:
方法不能被声明为公共的,因为它的参数使用了一个内部类型
谁能解释我在哪里犯了错误?感谢您的回答,谢谢!
【问题讨论】:
标签: ios swift class sdk encapsulation