2016-11-16 7 views
2

Ich habe die folgende Klasse mit privaten Struktur für Strings, die ich sie später für formatierte Zeichenfolgen verwenden möchte. Der Code stürzt jedoch zur Laufzeit ab.Formatieren einer Zeichenfolge mit% @ in Swift

Warum ist das? Liegt es daran, dass es als statisch definiert ist?

Unten ist der gestrippt Code:

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

Welche Linie verursacht den Absturz? Was ist die Fehlermeldung vom Absturz? – rmaddy

+0

Die Zeile, die mit 'notificationENG =' beginnt, gibt einen Fehler aus. Ich erwähne das im Kommentar am Ende der Zeile. Ich werde es für bessere Sichtbarkeit über die Linie setzen. Der Fehler, den ich bekomme, ist Thread 20: EXC_BAD_ACCESS (Code = 1, Adresse = 0x2) – oyalhi

Antwort

7

Sie vernachlässigte keine Details über den Absturz zu schaffen, aber ein offensichtliches Problem ist die Verwendung des %@ Formatspezifizierer mit ein Int. Sie müssen %d mit Int verwenden.

+0

Eigentlich ist '% @' für Objekte, nicht nur für Text. Details zu allen Formatangaben finden Sie in der Dokumentation. Sehen Sie sich die Dokumentation für 'NSString stringWithFormat:' für einen Link an. – rmaddy

+1

Eigentlich ist hier der Link: https://developer.apple.com/library/prerelease/content/documentation/CoreFoundation/Conceptual/CFStrings/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265 – rmaddy

6

Sie benötigen% @ mit % d zu ersetzen. ImageCount ist Int Wert. Verwenden Sie also % d anstelle von % @.

Formatbezeichner:

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

Für sehen alle Formatbezeichner finden Sie unter Apple Doc Format Specifiers

Verwandte Themen