我想创建一个带有私有方法自定义主体的类单例,但我收到以下消息错误:static let sharedInstance = AppBundle()
在调用
中缺少参数'rawValue'的参数
代码
class AppBundle {
static let sharedInstance = AppBundle()
enum AppBundle: String {
case developer
case alpha
case beta
case appStore
}
let appBundle: AppBundle = .appStore
private init() {
if let bundleIdentifier = Bundle.main.bundleIdentifier {
switch bundleIdentifier {
case "com.app.developer":
self.appBundle = .developer
case "com.app.beta":
self.appBundle = .beta
case "com.app.alpha":
self.appBundle = .alpha
default:
self.appBundle = .appStore
}
}
}
}
答案 0 :(得分:2)
您不应声明具有相同名称的enum
和class
,编译器无法决定您尝试实例化哪一个,它认为此处static let sharedInstance = AppBundle()
{{1 }}指的是AppBundle
。
您应该重命名enum
,使其名称与您的班级不同。
您的代码中还存在其他一些问题。也就是说,如果要使用enum
关键字将其声明为不可变,则无法为appBundle
指定默认值。我已更改let
方法以使用没有默认值的实现,并声明init
不可变。
appBundle
答案 1 :(得分:0)
枚举AppBundle设置为String。
您需要为所有案例提供原始字符串值,例如:
enum AppBundle: String {
case developer = "dev"
case alpha = "alpha"
case beta = "beta"
case appStore = "appStore"
}