2016-11-16 16 views
2

私は、後で書式設定された文字列に使用したい文字列用のprivate構造体を持つクラスを持っています。ただし、実行時にコードがクラッシュします。Swiftの%@でフォーマットする文字列

これはなぜですか?それは静的なletと定義されているからですか?以下は

は取り除かコードです:

class LGNotificationHandler { 
    private struct Strings { 
     static let SentImagesENG = "Sent %@ images to the event" 
     static let SentImagesTUR = "Etkinliğe %@ görsel gönderdi" 
    } 

    func buildNotificationString(imageCount: Int) -> String { 
     if imageCount == 1 { 
     . 
     . 
     . 

     } else { 
      // below line is giving error at run time 
      notificationENG = String(format: Strings.SentImagesENG, imageCount) 
      notificationTUR = String(format: Strings.SentImagesTUR, imageCount) 
     } 
    } 
} 
+0

クラッシュを引き起こすのはどのラインですか?クラッシュのエラーメッセージは何ですか? – rmaddy

+0

'notificationENG ='で始まる行はエラーとなります。私はこの行の最後のコメントにこれを言及します。私はより良い可視性のためにラインの上にそれを置くでしょう。実際には、 '%@'は実際にはテキストだけでなく、オブジェクトのためのものです。スレッド20:EXC_BAD_ACCESS(コード= 1、アドレス= 0x2) – oyalhi

答えて

7

参照が持つ%@書式指定子の使用であり、 Int%dIntを使用する必要があります。

+0

すべての書式指定子についての詳細は、ドキュメントを参照してください。リンクのための 'NSString stringWithFormat:'のドキュメントを見てください。 – rmaddy

+1

実際、リンクは次のとおりです。https://developer.apple.com/library/prerelease/content/documentation/CoreFoundation/Conceptual/CFStrings/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265 – rmaddy

6

あなたは%dので @%を交換する必要があります。 ImageCountはInt値です。したがって、%@の代わりに%dを使用してください。

フォーマット指定子:参照してください

%d - int Value 
%f - float value 
%ld - long value 
%@ - string value and for many more. 

すべての書式指定子は、あなたがクラッシュが、1つの明白な問題についての詳細を提供することを怠っアップルドックFormat Specifiers