【发布时间】:2012-04-03 04:43:09
【问题描述】:
我正在尝试计算通过MFMailComposeViewController 创建的邮件的大小。
用户从 UITableView 中选择一些标题,我的应用程序从服务器获取适当的 PDF 文件并将其附加到新邮件中。
我现在正在尝试计算附件大小(显示它或做一些限制或其他什么)。
for(int i = 0; i < fileIDs.count; i++) {
NSURL *docUrl = [NSURL URLWithString:[NSString stringWithFormat:
@"http://domain.com/getPDF.php?fileID=%@",
[fileIDs objectAtIndex:i]]];
NSData *docData = [NSData dataWithContentsOfURL:docUrl];
[mailController addAttachmentData:docData
mimeType:@"application/pdf"
fileName:@"file.pdf"];
mailLength = mailLength + [docData length];
NSLog(@"Mail generation...\n%i of %i (%.2fMB)",
i+1, currentRows.count, ((float)(int)mailLength / 1048576));
}
虽然我得到了输出。但它太多太大了。例如,计算出的文件大小为 5.14MB,但实际大小仅为 1.2MB。
我做错了什么?
【问题讨论】:
-
在将其转换为 int、long 和除法之前的原始大小是多少?还有,什么是“mainLength”?
-
[NSData length]结果为 NSInteger。所以 mailLength 是 NSInteger。我从上面丢失了我的例子。所以这是一个新的: 25 个附加文件的结果 Raw: 10388976, Calculated: 9.91MB, 实际: 2.4MB -
我更喜欢,它的数字是多少?你一开始就设置为0吗?你的结果总是给出 9.91mb 还是会有所不同?
-
初始值为
mailLength = 0;。大小取决于我选择的文件......但是当我选择相同的文件时,大小是“静态的”
标签: objective-c nsdata filesize mfmailcomposeviewcontroller