gpt4 book ai didi

ios - 如何使用应用程序组与多个应用程序(不仅仅是扩展)共享核心数据并避免损坏核心数据存储?

转载 作者:可可西里 更新时间:2023-11-01 04:57:18 34 4
gpt4 key购买 nike

我制作了一个 iOS 8 应用程序,它使用新的应用程序组功能与扩展程序共享核心数据存储。它工作得很好,我想我会尝试使用 2 个单独的应用程序在应用程序组容器中共享一个核心数据存储。 但是当它在 App 和 Extension 之间工作时,我在与 2 个应用共享时遇到核心数据存储损坏问题。

根据我打开这 2 个应用程序的顺序,我会收到不同的错误:

获取导致此错误:

CoreData: error: (522) I/O error for database at /private/var/mobile/Containers/Shared/AppGroup/[…].sqlite. SQLite error code:522, 'not an error’

保存导致此错误:

CoreData: error: (11) Fatal error. The database at /private/var/mobile/Containers/Shared/AppGroup/[...].sqlite is corrupted. SQLite error code:11, 'database disk image is malformed’

或者:

Core Data: error: -executeRequest: encountered exception = error during SQL execution : PRIMARY KEY must be unique with userInfo = { NSFilePath = "/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite"; NSSQLiteErrorDomain = 19; } CoreData: error: (19) PRIMARY KEY must be unique

最佳答案

这是我通过创建一个框架来保存/管理数据库的方法

  1. 在您的每个应用中将相同的条目添加到您的应用组权利中
  2. 使用它来创建您的数据库 URL:

    [NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:

  3. database = [ [UIManagedDocument alloc] initWithFileURL: databaseURL]

  4. [数据库 saveToFileURL: database.fileURL forSaveOperation: UIDocumentSaveForCreating completionHandler: ^(BOOL success)
  5. 如果成功,初始化persistentContainer
  6. 现在是棘手的部分……managedObjectModel 必须由框架定义。它不能在任何应用程序中。他们可以看到它,但它必须是框架 bundle 的一部分。这是基本大纲,还有很多内容,但有了这个你应该能够到达那里。玩得开心!

关于ios - 如何使用应用程序组与多个应用程序(不仅仅是扩展)共享核心数据并避免损坏核心数据存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28591449/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com