我正在寻找一个用于C / C ++ / Obj-C的库来维护我的对象的磁盘缓存。
目前我只是将每个对象存储在单独的文件中,但我不想在文件系统中创建这么多文件。是否有任何库可以使用这样的缓存来代替使用一个/多个文件?
答案 0 :(得分:3)
您可以使用所有对象创建一个集合(NSArray,NSSet,NSDictionary),并使用NSKeyedArchiver / NSKeyedUnarchiver将其放入单个文件中。
您还可以使用SQLite数据库或CoreData,其优点是,如果您只是根据需要从中提取对象,则不必一次将所有内容都加载到内存中。特别是如果你有(数万* 100 + Kb,无论如何都不会适合记忆......)。
你也可以使用C ++序列化库(尽管让它们与obj c对象一起工作会很棘手......,更多推荐用于C ++对象),比如boost序列化/归档(可以输出二进制文本,文本,xml),再次你可以使用集合(std :: list,std :: map ...)将它们全部存储到一个文件中。
答案 1 :(得分:2)
我使用Tokyo Cabinet库解决了我的问题。比为每个对象使用单独的文件更快地工作。