ios - 在 Swift 中为我的 Core Data 默认堆栈创建一个单例

标签 ios swift core-data singleton

我正在尝试为 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 生成错误:

enter image description here

最佳答案

要创建单例,请使用 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().propertyCoreDataStack.sharedInstance().method()。我建议使用更短的东西而不是 sharedInstance,例如 service

此解决方案一般适用,不仅适用于您的 Core Data 案例。

关于ios - 在 Swift 中为我的 Core Data 默认堆栈创建一个单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37333908/

相关文章:

iOs 应用程序 1000 多个数据条目 CoreData 还是简单的数组?

swift - 使用 Swift 获取核心数据实体

iphone - __weak UIDataType *weakSelf 和 UIDataType __weak *weakSelf 之间的区别?

ios - 如何将图像文字添加到数组并显示它们?

swift - 核心数据打印保存的数据但不显示在 TableView Controller 上

xcode - 如何找出(使用 XCTest UITest)在 tvOS AppleTV 的表格 View 中具有焦点的单元格?

iphone - 如何将 iPhone Core Data 与 Web 服务器同步,然后推送到其他设备?

ios - 如何从嵌入到 iPhone 肖像图片中的深度数据计算距离值?

ios - iPadOS:通过 NEHotspotConfiguration 连接的网络在一段时间后断开连接

ios - 我可以在 iTunes Connect 和 Xcode 中跳过 iPhone 应用程序的版本号吗?