Prüfen Sie, ob es ist ein emoji, die in einen string

Ich bin immer der text die Größe einer Zeichenfolge mit diesem

textSize = [[tempDict valueForKeyPath:@"caption.text"] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(280, CGFLOAT_MAX) lineBreakMode: NSLineBreakByWordWrapping];

Das einzige problem das ich habe ist, dass wenn der string enthält nur ein emoji, meine app abstürzt. Gibt es eine einfache Möglichkeit zu prüfen, emojis oder muss ich ein array erstellen mit allen möglichen emojis und dann überprüfen Sie mit, dass?

Fehler:

-[NSNull sizeWithFont:constrainedToSize:lineBreakMode:]: unrecognized selector sent to instance 0x3aa88a60


if ([tempDict valueForKeyPath:@"caption.text"]){
            NSLog(@"%@", [tempDict valueForKeyPath:@"caption"]);
            //Measure the message label box height
            textSize = [[tempDict valueForKeyPath:@"caption.text"] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(280, CGFLOAT_MAX) lineBreakMode: NSLineBreakByWordWrapping];
            int height = 320 + 20 + textSize.height;
            [cellHeight addObject:[NSNumber numberWithInt:height]];
}
  • Was ist der crash? Sie sollten lösen die crash statt Kontrolle für Emojis.
  • Der crash ist da, wenn ich rufe sizeWithFont, es gibt keinen text, um die Größe des. Oder hat sizeWithFont funktioniert, wenn nur ein emoji und kein text?
  • Bis Sie details über den Absturz (wie die komplette Fehlermeldung und entsprechenden code), es gibt keine Möglichkeit zu wissen.
  • Die Fehler ich erhalte, ist -[NSNull sizeWithFont:constrainedToSize:lineBreakMode:]: unrecognized selector geschickt Instanz 0x3aa88a60
  • sizeWithFonts sollte arbeitet mit Emojis, weil Emoji ist einige eine Sequenz von Zeichen, Sie können Lesen Sie über es auf wiki.
  • tempDict gibt NSNull, weil nicht gefunden Wert für den Pfad "Beschriftung.text"
  • Auch seine Arbeit gut, bis ich den post nur mit emojis/kein text. Die 14 bevor es alle gut funktionieren
  • Dies ist, was den Absturz verursacht text = "\Ud83d\Ude4c";
  • Können Sie fügen Sie einige code? Welcher Wert sollte im Wörterbuch?
  • Das hat nichts zu tun mit Emojis. Das hat nichts zu, so dass mit dem Aufruf zu sizeWithFont:. Dies ist einfach zu tun hat mit NSNull zurückgegeben von der valueForKeyPath: Anruf statt der erwarteten NSString.
  • aber kurz vor dem Absturz passiert, ich log [tempDict valueForKeyPath:@"Titel"] und es gibt eine text-Taste. Es zeigt sich: text = "\Ud83d\Ude4c";
  • Teilen Sie den code: NSString *str = [tempDict valueForKeyPath:@"caption.text"]; textSize = [str sizeWithFont.... Sie werden feststellen, dass str ist NSNull und nicht wirklich eine NSString in dem Fall geben Sie das problem.
  • alle Antworten in diesem post sind veraltet und arbeiten nicht mit Apple ' s neue emoji-sets. Ich fordere Sie auf, markieren Sie bitte Ihre Frage als akzeptiert meine Lösung, die funktioniert für alle aktuellen (und im Gegensatz zu den anderen Antworten, alle ZUKÜNFTIGEN) emojis. stackoverflow.com/a/42428051/2057171

InformationsquelleAutor david2391 | 2013-11-10
Schreibe einen Kommentar