我正在尝试为 Core Data 使用单例。以前,我已经成功地通过创建一个类 CoreDataStack.h/.m
来做到这一点,在 Objective-C 中调用下面的默认堆栈方法及其各自的托管对象上下文,并且可以工作很好:
//RETURNS CoreDataStack
+ (instancetype)defaultStack {
static CoreDataStack *defaultStack;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
defaultStack = [[self alloc]init];
});
return defaultStack;
}
但是,我使用的是 Swift 项目,我一直在努力将其转换为最新的 Swift 语法。我将如何着手创建它?到目前为止,这是我的尝试:
class func defaultStack() -> Self {
var defaultStack: CoreDataStack
var onceToken: dispatch_once_t = 0
dispatch_once(&onceToken) {
defaultStack = self.init()
}
return defaultStack
}
我的 Xcode 生成错误:
最佳答案
要创建单例,请使用 Krakendev's单行单例代码:
class CoreDataStack {
// Here you declare all your properties
static let sharedInstance = User()
private init() {
// If you have something to do at the initialization stage
// you can add it here. It will only be called once. Guaranteed.
}
// Add the rest of your methods here
}
您将调用您的方法和属性作为 CoreDataStack.sharedInstance().property
和 CoreDataStack.sharedInstance().method()
。我建议使用更短的东西而不是 sharedInstance
,例如 service
。
此解决方案一般适用,不仅适用于您的 Core Data 案例。
关于ios - 在 Swift 中为我的 Core Data 默认堆栈创建一个单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37333908/