通过电子邮件发送 coreData
Posted
技术标签:
【中文标题】通过电子邮件发送 coreData【英文标题】:Send coreData by Email 【发布时间】:2014-07-17 22:20:11 【问题描述】:我制作了一个简单的应用程序,用于在 CoreData 中使用 CoreLocation 存储位置。我的问题是现在我想通过电子邮件发送我所有的“数据库”(CoreData)来查看和处理数据,但我做不到。我试图将 NSManagedObjects 转换为 NSDictionary 并枚举该字典,但它总是为空。我该怎么办?
- (NSManagedObjectContext *)managedObjectContext
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)])
context = [delegate managedObjectContext];
return context;
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"RegistoCoreData"];
self.locations = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
[self.tableView reloadData];
- (IBAction)send:(id)sender
NSArray *keys = [[[location entity]attributesByName]allKeys];
dicionarioLocalizacoesNoCoreData = [location dictionaryWithValuesForKeys:keys];
for (NSString *valores in dicionarioLocalizacoesNoCoreData)
NSLog(@"%@, %@", valores, [dicionarioLocalizacoesNoCoreData objectForKey:valores]);
// Email Subject
NSString *emailTitle = @"Localizações";
// Email Content
NSString *messageBody = [NSString stringWithFormat:@"%@, %@",valores, [dicionarioLocalizacoesNoCoreData objectForKey:valores]];
// To address
NSArray *toRecipents = @[@"email@mail.com"];
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody ishtml:NO];
[mc setToRecipients:toRecipents];
// Present mail view controller on screen
[self presentViewController:mc animated:YES completion:NULL];
【问题讨论】:
"...我想通过电子邮件发送我所有的“数据库”(CoreData) 以查看和处理数据..." 所以这只是为了您自己使用,检查和编辑数据?或者它是完成后将在应用程序中的一项功能? 仅供我自己使用是的 【参考方案1】:由于您在评论中提到这仅供您检查数据,因此使用电子邮件是解决问题的一种不必要的复杂方法。 Xcode 可以将您应用程序的任何数据下载到您的 Mac。转到管理器窗口 (cmd-shift-2),选择您的设备,然后选择设备的“应用程序”条目。这将列出通过 Xcode 安装的所有应用程序。页面底部有一个“下载”链接,您可以使用该链接获取所需的任何数据。
如果您真的想使用电子邮件,那么这段代码可能会在很多地方出错。您应该使用 Xcode 的调试器来单步调试代码。一些可能性包括:
提取请求不返回任何值 您将提取结果分配给self.locations
,但稍后您尝试发送location
。从您的问题中不清楚location
在哪里(如果有的话)获得价值。
目前尚不清楚提取代码的来源——您没有在方法中显示它。当您尝试发送数据时,可能尚未进行提取?
在一些相关的注释中:在此代码的第一部分调用 performSelector
没有任何意义。你可能会想到respondsToSelector
,这有点道理。在应用程序委托上查找上下文并不是很好的设计,但是像你这样调用performSelector
在这里对你没有任何用处。
【讨论】:
谢谢你的回答,我会尝试通过Xcode下载数据,我不知道Xcode有这个功能。非常感谢。以上是关于通过电子邮件发送 coreData的主要内容,如果未能解决你的问题,请参考以下文章
作为收件人,是不是可以检测电子邮件是通过 Gmail“计划发送”还是“发送”发送的?