Porównaj ceny domen i usług IT, sprzedawców z całego świata

Jak w Swift sprawdzić, czy obiekt (AnyObject) jest łańcuchem?


Próbowano przy użyciu:
obj.isKindOfClass(String)

Mówi jednak, że typ „String” nie jest zgodny z protokołem „AnyObject”
Jak więc możesz stwierdzić, czy obiekt jest łańcuchem, czy nie?
Kontekstem tego pytania jest metoda UIActivity, przygotowanieWithActivityItems, w której muszę przechowywać element działania, ale jeśli istnieje wiele elementów działania, jak określić, która jest która?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Czek:
obj is String// true or false

Konwertować:
obj as? String// nil if failed to convert

Wymagane opcjonalne:
if let str = obj as? String {
// success
} else {
// fail
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Pójdę trochę stycznie, abyś mógł zrozumieć, co się dzieje.

Łańcuchy nie są obiektami w biegu.

!!!
Raczej.

?

??
Ze względu na to, jak działa wolny most ... jeśli importujesz środowisko uruchomieniowe Objective-C, możesz traktować ciągi znaków jako obiekt ... sprawdź to:
Ten kod w ogóle się nie skompiluje:
// Playground - noun: a place where people can play// import Foundationvar foo: AnyObject = "hello"
^ Type 'String' does not conform to protocol 'AnyObject'

Ale jeśli odkomentuję framework Foundation, kompiluje się dobrze, ponieważ łączymy String z NSString:
// Playground - noun: a place where people can playimport Foundationvar foo: AnyObject = "hello"// We're all good here!

A jeśli chcesz sprawdzić, czy foo jest ciągiem znaków ... możesz to zrobić:
import Foundationvar foo: AnyObject = "hello"foo.isKindOfClass(NSString)// this returns true

Więc ... łańcuch nie jest obiektem, ale jeśli potraktujesz go jako jednostkę, zostanie przekonwertowany na
NSString
, a teraz jest obiektem. Ale nie możesz sprawdzić, czy obiekt jest klasy
String
, ponieważ nie ma czegoś takiego jak obiekt
String
. Musisz użyć
NSString
.
Oczywiście nadal powinieneś zrobić to, co powiedział Scott w swojej odpowiedzi, używając słów kluczowych
is
lub
as?
.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się