NSMutableArray到NSDictionary然后添加到NSArray

时间:2018-03-11 17:05:11

标签: xcode nsmutablearray

我的应用将图像存储在NSMutableArray中。然后我调用这些对象,然后通过电子邮件发送它们在下面代码的mailSender.parts部分。问题是当我需要添加所有对象时,它只添加第一个objectatindex。我很困惑如何在self.arrSlidshowImg NSMutableArray中添加到vcfPart2 NSDictionary,然后将其添加为数组对象,以便mailSender.parts将发送所有图像。有什么想法吗?我还应该注意到我做了一个NSLog来查看结果添加此代码NSLog(@“VCF:%@”,vcfPart2);.日志文件显示了vcfPart2中的每个值。所以代码调用每个响应。

 NSDictionary *vcfPart2;
        for (int i = 0; i < self.arrSlidshowImg.count; i++) {
             NSData *vcfData = [self.arrSlidshowImg objectAtIndex:i];
             vcfPart2 = [JFMailSender partWithType:PartTypeFilePart
             Message:[vcfData base64EncodedStringWithOptions:0]
             ContentType:@"image/jpeg"
             ContentTransferEncoding:@"base64"
             FileName:[NSString stringWithFormat:@"Individual_%d", i]];

        }

   mailSender.parts = [NSArray arrayWithObjects:plainPart2,vcfPart2,nil];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            dispatch_async(dispatch_get_main_queue(), ^{
                [mailSender sendMail];
            });

        });

1 个答案:

答案 0 :(得分:0)

以下内容来自对您的代码的简单阅读,以及其他我未查找的内容JFMailSender

  1. 您声明变量vcfPart2以保存对字典的引用
  2. 您输入循环
  3. 在循环中为vcfPart2指定一个值,当您报告没有警告时,此值可能是对字典的引用
  4. 执行步骤3 self.arrSlidshowImg.count次,每次迭代循环
  5. 退出循环,此时vcfPart2将保留分配给它的最后一个引用,之前的self.arrSlidshowImg.count - 1已被覆盖
  6. 您的担忧似乎是当您使用vcfPart2时它只引用一个字典 - 但这就是它所能做的一切,就是它的类型。

    也许您打算在循环中创建一个字典然后该字典添加到一个可变数组中,以便在循环之后数组包含所有字典?

    HTH