【问题标题】:Calculate mail attachment size in iOS在 iOS 中计算邮件附件大小
【发布时间】: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


【解决方案1】:

我修好了。

我只需要使用浮点数,而不是使用 NSInteger。它现在可以工作了:

// header:
float mailLength;

// implementation:
mailLength = mailLength + [docData length];
NSLog(@"Mail generation...\n%i of %i (%.2fMB)", i+1, currentRows.count, (mailLength / 1048576));

【讨论】:

  • good :) 是的,不太清楚你在除法前用 (int)(float) 在那里做什么。很好用!
猜你喜欢
  • 2011-12-06
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多