iOS: 将数据存储在内存中而不是磁盘上

iOS: Storing data in memory rather than on disk

我正在寻找有关如何将敏感数据存储在内存中而不是磁盘上的教程 iOS (10+)。我用谷歌搜索,但没有找到真正相关的内容。

我熟悉 iOS、SQLite、Plist、Core Data、User Defaults 和 Keychain 的大多数数据存储选项。我知道 Core Data 有一个内存中持久存储选项,但我不确定如何将其指定为我想要使用的选项。查看 Apple 文档和其他教程,我只看到了持久存储的实例化,但没有声明它是 sqlite 还是核心数据还是内存中。

例如,Apple 在 Core Data 堆栈上的文档:

import UIKit
import CoreData
class DataController: NSObject {
    var managedObjectContext: NSManagedObjectContext
    init(completionClosure: @escaping () -> ()) {
        persistentContainer = NSPersistentContainer(name: "DataModel")
        persistentContainer.loadPersistentStores() { (description, error) in
            if let error = error {
                fatalError("Failed to load Core Data stack: \(error)")
            }
            completionClosure()
        }
    }
}

这个问题似乎指向了正确的方向(只是最初发布的代码)

Save In-Memory store to a file on iOS

- (NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration:(NSString *)configuration URL:(NSURL *)storeURL options:(NSDictionary *)options error:(NSError **)error;

仅仅是这样,传递一个类型吗?后续,应用程序关闭后,内存中的数据会被释放吗?

谢谢

由于您使用的是 NSPersistentContainer,因此您可以告诉 Core Data 使用 NSPersistentStoreDescription 实例的存储类型。它有一个名为 type 的 属性,它接受像 NSInMemoryStoreType 这样的值。设置描述,然后将其分配给容器的 persistentStoreDescriptions 属性,您将获得一个内存存储。您提到的方法可行,但需要更改您的核心数据设置以删除 NSPersistentContainer.

顾名思义,它仅存在于内存中,因此当应用程序退出时,存储在那里的任何内容都会消失。