2012-12-30 46 views
1

我想使用MFMailComposeViewController来编写一个电子邮件,并且我正在使用一个HTML字符串来绘制一张表。它拥有265个论据,所以我要通过这样的:stringWithFormat中的参数数量是否有限制?

[mailViewController setMessageBody: 
[NSString stringWithFormat:NSLocalizedString(@"EMAIL_HTML_KEY", nil), 

               date, 

               object.foo[0], 

               [object.bar[0] objectAtIndex:0], 

               [object.bar[0] objectAtIndex:1], ... ... 

当我运行应用程序时,它总是与EXC_BAD_ACCESS错误挂起。它只是根据调试器中显示的列表在NSDescriptionWithLocaleFunc后面的objc_msgSend处停下来,所以看起来很清楚我的字符串有问题。事情是......没有。我仔细检查了两个部分(字符串本身和参数列表),并且它们都可以,所以我试图剪切字符串以查看问题出在哪里,并且我发现只有字符串足够大时才会出现错误。

字符串= “123456” - >错误

字符串= “123” - >行

字符串= “234” - >行

字符串= “456” - >好吧

所以,看起来HTML字符串格式良好,参数列表正确。我能想象的唯一的事情是,我可以发送给使用stringWithFormat创建的NSString的参数数量是有限制的。这样对吗?。我会分割字符串,但是,作为HTML代码,我必须将它作为单个字符串传递给mailViewController。

有什么建议吗?我错过了什么?

+0

好吧。我在这里怀疑。你回答了这个问题,但迈克尔的答案对我来说更有用,以解决我的问题,所以......:D最后,我接受了你的答案,并给了迈克尔+1。 :) – rmvz3

回答

0

对于你的头...号。你可以放任何数量的参数。

而且我可以看到

[mailViewController setMessageBody:NSString stringWithFormat:NSLocalizedString 

[mailViewController setMessageBody:[NSString stringWithFormat:NSLocalizedString 

而且你应该appendString使用mutalbeString和循环可以做,因为你的指数被看作是改变从0到1。 ...

+1

谢谢Anoop。现在很清楚。那时肯定有错误。我纠正了错字,再次感谢。 – rmvz3

1

您的崩溃很可能是因为传递给巨大格式字符串的那些随机项之一(例如“[object.bar[0] objectAtIndex:222]”)将是格式字符串未预期的对象。

为什么不构成使用“NSMutableString”的对象你的HTML,通过“appendFormat:”或“appendString:”方法,然后通过完全构造的字符串为“[mailViewController setMessageBody: ]

似乎比试图少了很多疯狂通过一个可能容易通过NSLocalizedString获取的格式字符串实例化一个不可变的NSString。

另外,如果你通过建立你的NSMutableString字符串,你也许能追查是否有在你试图构建HTML代码的任何实际的突破。

+0

谢谢迈克尔。你是对的。使用NSMutableString似乎是一种更好的方法。但是,正如我所说的,HTML代码的每一部分都能正确工作,所以我认为意外的对象不是问题(除此之外,它们都是同类)。我会尝试可变字符串,看看我是否可以追踪发生了什么。 – rmvz3

+0

现在,这很奇怪。我只是按照你所说的去做,然后将大字符串分成三个独立的字符串,并带有自己的参数。然后将其中的三个加入到一个预先填充的HTML字符串中,并将其传递给邮件编辑器。现在一切都很好。不过,不知道错误是什么。 – rmvz3

相关问题