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
.
顾名思义,它仅存在于内存中,因此当应用程序退出时,存储在那里的任何内容都会消失。
我正在寻找有关如何将敏感数据存储在内存中而不是磁盘上的教程 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
.
顾名思义,它仅存在于内存中,因此当应用程序退出时,存储在那里的任何内容都会消失。