Совпадение типа данных объекта в Swift

Как сопоставить тип данных объекта в Swift?

Подобно:

var xyz : Any xyz = 1; switch xyz { case let x where xyz as?AnyObject[]: println("\(x) is AnyObject Type") case let x where xyz as?String[]: println("\(x) is String Type") case let x where xyz as?Int[]: println("\(x) is Int Type") case let x where xyz as?Double[]: println("\(x) is Double Type") case let x where xyz as?Float[]: println("\(x) is Float Type") default:println("None") } 

В этом случае регистр case case case

2 Solutions collect form web for “Совпадение типа данных объекта в Swift”

изменить var xyz : AnyObject для var xyz : Any и добавить его будет соответствовать этому случаю

 case let x as Int: 

от REPL

  1> var a : Any = 1 a: Int = <read memory from 0x7fec8ad8bed0 failed (0 of 8 bytes read)> 2> switch a { case let x as Int: println("int"); default: println("default"); } int 

с языка программирования Swift

Вы можете использовать операторы is и as в операторах switch, чтобы обнаружить определенный тип константы или переменной, которая, как известно, имеет тип Any или AnyObject. В приведенном ниже примере выполняется итерация по элементам массива вещей и задается тип каждого элемента с помощью оператора switch. Некоторые из операторов оператора switch связывают их согласованное значение с константой указанного типа, чтобы можно было напечатать его значение:

 for thing in things { switch thing { case 0 as Int: println("zero as an Int") case 0 as Double: println("zero as a Double") case let someInt as Int: println("an integer value of \(someInt)") case let someDouble as Double where someDouble > 0: println("a positive double value of \(someDouble)") case is Double: println("some other double value that I don't want to print") case let someString as String: println("a string value of \"\(someString)\"") case let (x, y) as (Double, Double): println("an (x, y) point at \(x), \(y)") case let movie as Movie: println("a movie called '\(movie.name)', dir. \(movie.director)") default: println("something else") } } // zero as an Int // zero as a Double // an integer value of 42 // a positive double value of 3.14159 // a string value of "hello" // an (x, y) point at 3.0, 5.0 // a movie called 'Ghostbusters', dir. Ivan Reitman 

Заметка:

 var xyz : AnyObject = 1 

даст вам NSNumber потому что Int не является объектом, поэтому он автоматически преобразует его в NSNumber который является объектом

Включение интересного использования «case is», то есть «case is Int, is String», «,» поведение похоже на оператор OR .

 switch value{ case is Int, is String: if value is Int{ print("Integer::\(value)") }else{ print("String::\(value)") } default: print("\(value)") } 

Похожие сообщения с демо-ссылкой

Interesting Posts

Загрузка PDF с помощью AFNetworking 2.0

заголовок навигации на предыдущем экране исчезает при нажатии кнопки «Назад»

Как получить аварийные журналы из приложения TestFlight в предварительном тестировании

как преобразовать стерео аудио в моно?

Захват видео на устройстве iOS и передача его на сервер (или другой мобильный)

Visual Studio Cordova – не удается развернуть приложение

SiriKit – INSendPaymentIntentHandling – совместное использование пользовательских классов в IntentHandler, которые были написаны в функциональных возможностях приложения

Преобразование строки MM / DD / YYYY в NSDate

Ошибка «Звонок может бросать, но не помечен« try », и ошибка не обрабатывается»

Xcode 4 – ошибка clang

Как получить пользовательский класс UITableViewCell, созданный в IB, для загрузки в UITableView?

Измените позицию местоположения моего местоположения на карте google ios

Как получить доступ к экземпляру базы данных SQLite на iPhone?

Не найдено идентификаторов кода: настройка jenkins

API POST API вызывает проблемы с корпусом JSON

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.