我正在尝试从协议创建一个单例类,我的目的是拥有多个 xxxxxHandler,例如。 SpotifyHandler、AppleMusicHandler 等等...并在用户使用其音乐帐户登录时创建正确的处理程序,然后使处理程序在整个程序中均可访问。
但是当我尝试制作 SpotifyHandler 时,我遇到了这个错误:
Property 'shared' in non-final class 'SpotifyHandler' must specify type 'Self' to conform to protocol 'MusicHandler'
在此行:
static var shared: SpotifyHandler = SpotifyHandler()
这是单例类和协议的代码(单独的文件)
import Foundation
import SwiftUI
class SpotifyHandler : MusicHandler {
static var shared: SpotifyHandler = SpotifyHandler()
var is_logged_in: Bool = false;
func set_is_logged_in(is_logged_in: Bool) {
self.is_logged_in = is_logged_in
}
func print_status() {
print("--- Status ---")
print("Is logged in: \(self.is_logged_in)")
}
}
public protocol MusicHandler {
static var shared: Self { get }
var is_logged_in: Bool { get }
func set_is_logged_in(is_logged_in: Bool)
func print_status()
}
我对 swift 很陌生,但有其他语言的经验,如果您有的话,我愿意接受有关解决此问题的替代方法的建议。 :)
如果您可以使用
MusicHandler
而不是 Self
来解决
public protocol MusicHandler {
static var shared: MusicHandler { get }
class SpotifyHandler : MusicHandler {
static var shared: MusicHandler = SpotifyHandler()