Ios iPhone应用程序-将json数组转换为电子邮件附件

Ios iPhone应用程序-将json数组转换为电子邮件附件,ios,json,csv,email-attachments,Ios,Json,Csv,Email Attachments,我正在制作一个iPhone应用程序,在db上运行查询并向用户显示结果,理想情况下,我希望能够在显示结果后通过电子邮件发送这些结果 我正在使用json数组。从我在网上读到的内容来看,我相信我必须先将其转换为CSV文件,然后将其附加到电子邮件中。然后,用户应该能够从其电子邮件中下载文件并在excel中打开 我将如何进行这项任务?我是否需要为转换制作一个API,或者这是我可以在xcode上做的事情?我对这一点还不熟悉,希望了解有关流程的任何细节 您可以在Xcode中将Json转换为Csv 如果您的j

我正在制作一个iPhone应用程序,在db上运行查询并向用户显示结果,理想情况下,我希望能够在显示结果后通过电子邮件发送这些结果

我正在使用json数组。从我在网上读到的内容来看,我相信我必须先将其转换为CSV文件,然后将其附加到电子邮件中。然后,用户应该能够从其电子邮件中下载文件并在excel中打开

我将如何进行这项任务?我是否需要为转换制作一个API,或者这是我可以在xcode上做的事情?我对这一点还不熟悉,希望了解有关流程的任何细节

  • 您可以在Xcode中将Json转换为Csv
  • 如果您的json(NSDictionary)键在整个阵列中都是相同的,那么可以像下面这样轻松地完成

     NSArray *keys = [self.dictionary allKeys];
    
     // -- you need to sort the keys first because the index order is not identical every time in nsdictionary.
    
     NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compare:)];
    
     NSMutableString *large_CSV_String = [[NSMutableString alloc] initWithFormat:@"%@",[sortedKeys objectAtIndex:0];
     for(int i = 1; i<[sortedKeys count]; i++){
    
     [large_CSV_String appendFormat:@",%@",[sortedKeys objectAtIndex:i]];
    
     }
    
     [large_CSV_String appendFormat:@"\n"];
    
    NSArray*keys=[self.dictionary allKeys];
    //--您需要首先对键进行排序,因为在nsdictionary中每次索引顺序都不相同。
    NSArray*sortedKeys=[使用selector:@selector(比较:)]的键SortedDarray];
    NSMutableString*large_CSV_String=[[NSMutableString alloc]initWithFormat:@“%@,[sortedKeys objectAtIndex:0];
    
    对于(int i=1;i)来说,结果需要是附件还是可以在电子邮件正文中?在Excel中打开的附件中感谢您的详细解释raja,这真的很有帮助。我能够创建我的csv字符串并用NSLog打印出来。我只是有一个后续问题。这对我来说到底意味着什么“将文件另存为csv并在电子邮件中附加”?我将结束本教程以制作电子邮件附件()。因此,我无法使用该字符串作为附件并设置其MIME类型?还有一个额外的步骤要做?再次感谢您的帮助抱歉错误为“将此文件另存为csv”,实际上是“将此字符串另存为csv文件并在电子邮件中附加”。您可以使用NSString中的“writeToFile:”方法将字符串作为文件写入。明白了。我非常感谢您的帮助他来帮忙!
    // -- your array object NSArray *jsonArray 
    
    
    for (NSDictionary *ajsonObject in jsonArray){
    
     [large_CSV_String appendFormat:@"%@",[ajsonObject objectForKey:[sortedKeys objectAtIndex:0]]];
    
     for(int i = 1; i<[sortedKeys count]; i++){
    
     [large_CSV_String appendFormat:@",%@",[ajsonObject objectForKey:[sortedKeys objectAtIndex:i]]];
    
     }
     [large_CSV_String appendFormat:@"\n"];
    
    }