Versucht mit:
%Vor%Aber es sagt, Type 'String' entspricht nicht dem Protokoll 'AnyObject'
Wie können Sie also feststellen, ob ein Objekt eine Zeichenkette ist oder nicht?
Der Kontext dieser Frage ist die UIActivity-Methode prepareWithActivityItems, in der ich das Aktivitätselement speichern muss. Wenn es jedoch mehrere Aktivitätselemente gibt, wie finden Sie heraus, welche welche ist?
Ich werde auf eine kleine Tangente gehen, damit Sie verstehen, was vor sich geht.
Strings sind keine Objekte in swift. !!!
Irgendwie. ???
Wegen der Funktionsweise der gebührenfreien Überbrückung ... Wenn Sie die Objective-C-Laufzeit importieren, können Sie Strings als Objekt behandeln ... überprüfen Sie dies:
Dieser Code wird überhaupt nicht kompiliert:
%Vor%Aber wenn ich das Foundation-Framework auskommentiere, dann kompiliert es vollkommen gut, weil wir Bridging zwischen String und NSString aktivieren:
%Vor%Und wenn Sie überprüfen möchten, ob foo eine Zeichenkette ist ... können Sie das tun:
%Vor% Also ... string ist kein Objekt, aber wenn Sie es als eins behandeln, wird es in ein NSString
umgewandelt und jetzt ist es ein Objekt. Sie können jedoch nicht überprüfen, ob ein Objekt zur Klasse String
gehört, da es kein String
-Objekt gibt. Sie müssen NSString
verwenden.
Natürlich sollten Sie immer noch das tun, was Scott in seiner Antwort gesagt hat, indem Sie die Schlüsselwörter is
oder as?
verwenden.