2012-12-30 45 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

相關問題