Ios 使用核心数据创建CSV文件
我有一个核心数据应用程序,可以在tableView中显示其数据。我知道如何创建CSV文件,在创建表格时,我正在CellForRowatineXpath中使用以下代码:Ios 使用核心数据创建CSV文件,ios,csv,core-data,export-to-csv,Ios,Csv,Core Data,Export To Csv,我有一个核心数据应用程序,可以在tableView中显示其数据。我知道如何创建CSV文件,在创建表格时,我正在CellForRowatineXpath中使用以下代码: outputStringToCSV = [outputStringToCSV stringByAppendingFormat:@"%@ ,%@ ,%@ \n", punchitem.punchitemRoomNumber, punchitem.punchitemRoomName, punchitem.punchitemDescri
outputStringToCSV = [outputStringToCSV stringByAppendingFormat:@"%@ ,%@ ,%@ \n", punchitem.punchitemRoomNumber, punchitem.punchitemRoomName, punchitem.punchitemDescription];
NSLog(@"=== OUTPUTSTRING: %@", outputStringToCSV);
我的outputStringToCSV是一个NSString,我的目的是将格式化的字符串保存到CSV文件中
问题是,每当tableView在信息或谓词更改时重新加载时,outputStringToCSV的大小就会被追加,并且随着信息的重复而越来越大。我的outputStringToCSV是否应该转到cellForRowAtIndexPath以外的其他地方?是否有更好的方法从我的表中收集信息并将其加载到CSV文件中
我不知道现在该往哪个方向走,如果能得到任何帮助,我将不胜感激。谢谢
cellForRowAtIndexPath:
应该只返回请求的单元格,而不做其他事情。如果在该方法内创建CSV文件,则数据将不完整,因为该方法将仅对可见单元格调用。如果您有1000个条目,并且您的用户从未滚动到底部,那么您的文件将不完整
您应该创建一个指定的方法来导出CSV,如下所示:
- (void)exportCSV
{
NSMutableArray *results = [[NSMutableArray alloc] init];
NSManagedObjectContext *moc = [self managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"PunchItem" inManagedObjectContext:moc]];
[request setSortDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"punchitemRoomNumber" ascending:YES]]];
NSError *error = nil;
NSArray *punchItems = [moc executeFetchRequest:request error:&error];
if (error) {
NSLog(@"Error fetching the punch item entities: %@", error);
} else {
for (PunchItem *punchitem in punchItems) {
[results addObject:[NSString stringWithFormat:@"%@ ,%@ ,%@", punchitem.punchitemRoomNumber, punchitem.punchitemRoomName, punchitem.punchitemDescription]];
}
}
NSString *resultString = [results componentsJoinedByString:@" \n"];
}
完成。您应该在需要时创建一次文件,而不是每次显示单元格时创建一次……是否只需要一份数据库的CSV副本?为什么不在应用程序启动或第一次加载视图时转储一次呢?我不知道如何创建一次。用户将使用操作表通知应用程序保存CSV,然后通过电子邮件发送。我不知道如何将数据保存到CSV中。当用户想要发送CSV文件时,请仔细查看您的所有操作并创建CSV字符串…不要忘记实际将
resultString
保存到某个地方。:)@汤姆哈林顿哈哈,真的!非常感谢。这很有帮助!!