【问题标题】:Send coreData by Email通过电子邮件发送 coreData
【发布时间】: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) 以查看和处理数据..." 所以这只是为了您自己使用,检查和编辑数据?或者它是完成后将在应用程序中的一项功能?
  • 仅供我自己使用是的

标签: core-data core-data-migration


【解决方案1】:

由于您在评论中提到这仅供您检查数据,因此使用电子邮件是解决问题的一种不必要的复杂方法。 Xcode 可以将您应用程序的任何数据下载到您的 Mac。转到管理器窗口 (cmd-shift-2),选择您的设备,然后选择设备的“应用程序”条目。这将列出通过 Xcode 安装的所有应用程序。页面底部有一个“下载”链接,您可以使用该链接获取所需的任何数据。

如果您真的想使用电子邮件,那么这段代码可能会在很多地方出错。您应该使用 Xcode 的调试器来单步调试代码。一些可能性包括:

  • 提取请求不返回任何值
  • 您将提取结果分配给self.locations,但稍后您尝试发送location。从您的问题中不清楚location 在哪里(如果有的话)获得价值。
  • 目前尚不清楚提取代码的来源——您没有在方法中显示它。当您尝试发送数据时,可能尚未进行提取?

在一些相关的注释中:在此代码的第一部分调用 performSelector 没有任何意义。你可能会想到respondsToSelector,这有点道理。在应用程序委托上查找上下文并不是很好的设计,但是像你这样调用performSelector 在这里对你没有任何用处。

【讨论】:

  • 谢谢你的回答,我会尝试通过Xcode下载数据,我不知道Xcode有这个功能。非常感谢。
猜你喜欢
  • 2012-01-07
  • 2012-04-27
  • 2016-07-04
  • 2018-09-19
  • 2021-03-23
  • 2017-05-16
  • 2011-07-14
  • 2014-12-18
相关资源
最近更新 更多