我正在寻找有关如何将敏感数据存储在内存中而不是 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
,因此您通过 NSPersistentStoreDescription
的实例告诉 Core Data 使用哪种存储。它有一个名为 type
的属性,它接受像 NSInMemoryStoreType
这样的值。设置描述,然后将其分配给容器的 persistentStoreDescriptions
属性,您将获得一个内存存储。您提到的方法可行,但需要更改您的核心数据设置以删除 NSPersistentContainer
。
顾名思义,它仅存在于内存中,因此当应用程序退出时,存储在那里的任何内容都会消失。
关于iOS:将数据存储在内存中而不是磁盘上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49861852/