1

MFMailComposeViewControllerで作成したメールのサイズを計算しようとしています。 ユーザーはUITableViewからいくつかのタイトルを選択し、私のアプリケーションはサーバーから適切なPDFファイルを取り出し、それを新しいメールに添付します。iOSのメール添付サイズを計算する

私は今、添付ファイルのサイズを計算しようとしています(それを表示したり、何か制限を加えるなど)。

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です。

私は間違っていますか?

+0

int、longに変換して分割する前に、元のサイズは何ですか?また、 "mainLength"は何ですか? – chikuba

+0

'[NSData length]'はNSIntegerを返します。したがって、mailLengthはNSIntegerです。私は上から私の例を失った。したがって、新しいものがあります:添付ファイル25件** Raw:** _10388976_ **計算済み:** _9.91MB_ **実際のファイル:** _2.4MB_ –

+0

その他のファイルは何ですか?最初は0に設定していますか?あなたの結果は常に9.91メガバイトを与えるか、それは異なりますか? – chikuba

答えて

2

私はそれを修正しました。

NSIntegerを使用する代わりに、floatを使用するだけでした。今すぐ動作します:

// header: 
float mailLength; 

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

良い:)ええ、分からないうちにどこで(int)(float)それは素晴らしい作品です! – chikuba

関連する問題