CDJSONExporter 1.0

CDJSONExporter 1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新版本2014年12月

Marcel Ruegenberg维护。



  • Marcel Ruegenberg

将 Core Data 存储转换为 JSON 的程序。其目标是提供适用于使用 Core Data 的应用程序的可读备份功能,不依赖于 Core Data 的任何实现细节。

安装

使用 CDJSONExporter CocoaPod 进行安装是推荐的方式。

否则,复制 CDJSONExporter 的代码(此存储库中所有的 .h.m 文件)和 NSData+Base64 到您的项目中。

使用方法

首先,导入:#import "CDJSONExporter.h"

创建导出数据

NSData *export = [CDJSONExporter exportContext:appDelegate.managedObjectContext
                                 auxiliaryInfo:@{@"some key": someOptionalAuxiliaryInformation}];

此数据可以写入临时文件,并与 UIDocumentInteractionController 分享,或在邮件编辑视图控制器中作为附件使用

MFMailComposeViewController *mailer = ...;
// ...
[mailer addAttachmentData:export mimeType:@"application/json" fileName:@"backup.someAppBackup"];

要稍后打开数据,您需要将您的应用程序注册为处理端类型/UTI 与扩展 someAppBackup 的处理程序。之后,您可以在应用程序代理中处理具有此扩展的数据

- (BOOL)application:(UIApplication *)application 
            openURL:(NSURL *)url 
  sourceApplication:(NSString *)sourceApplication 
         annotation:(id)annotation {
    if([[url pathExtension] isEqualToString:@"someAppBackup"]) {
        NSData *jsonData = [NSData dataWithContentsOfURL:url];
        BOOL success = [CDJSONExporter importData:jsonData toContext:appDelegate.managedObjectContext clear:YES];
        if([[NSFileManager defaultManager] isDeletableFileAtPath:[url path]])
            [[NSFileManager defaultManager] removeItemAtURL:url error:NULL];
    }
}

已知问题

此代码的内存使用不是最佳。主要原因是 Core Data 无法永久保存无效对象。这通常是好事,但阻止了代码在导入时持久化更改。

Travis CI build status