1,将数据分享出去,以数据库邮件分享为例,首先将本地数据库全部读出并写到一个JOSN文件中
-(void)shareDatabase:(id)sender {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//make a file name to write the data to using the documents directory:
NSString *fileName = [NSString stringWithFormat:@"%@/Database.json", documentsDirectory];
_jsonURL = [NSURL fileURLWithPath:fileName]; //JSON文件的路径
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[_jsonURL] applicationActivities:nil];
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){//if Device is ipad
UIPopoverPresentationController *popover = activityVC.popoverPresentationController;
if (popover){
popover.barButtonItem = self.navigationItem.rightBarButtonItem;
popover.permittedArrowDirections = UIPopoverArrowDirectionRight|UIPopoverArrowDirectionUp;
}
}
[activityVC setValue:@"JSON Attached" forKey:@"subject"];//邮件主题
activityVC.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
MESHLOG(@"Activity Type Selected :%@", activityType);
if (completed) {
MESHLOG(@"Selected Activity was completed");
} else {
if (activityType == NULL) {
MESHLOG(@"User dismissed the view controller without making a selection");
} else {
MESHLOG(@"Activity was not performed %@",returnedItems);
MESHLOG(@"activityError: %@",activityError);
}
}
};
dispatch_async(dispatch_get_main_queue(), ^{
[self.navigationController presentViewController:activityVC animated:YES completion:nil];
});
}
2,对方收到json文件后,用app打开文件后,会调用AppDeletgte中的handleOpenURL方法
- (BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url {
_loadDatabaseManager = [[LoadDatabaseManager alloc] init];
if (url != nil && [url isFileURL]) {
[_loadDatabaseManager handleOpenURL:url];
}
return YES;
}
通过handleOpenURL中的url将json文件解析成字典
- (void) handleOpenURL:(NSURL *)url {
NSData *jsonDataImported = [NSData dataWithContentsOfURL:url];
NSError *error;
NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:jsonDataImported options:NSJSONReadingMutableLeaves error:&error];
}