Как добавить новый элемент в мой многотипный массив в Swift

Когда я использую однотипный массив в swift, я могу добавлять элементы в свой массив с различными типами операций (append, + = и т. Д.), Например, этот код работает:

var arr = [1, 2, 3, 4, 5] arr[0...2] = [-1, -2, -3] arr += 6 arr.append(-3) arr += [8, -3, 1, 2] //arr is now [-1, -2, -3, 4, 5, 6, -3, 8, -3, 1, 2] 

но когда я инициализирую свой массив с помощью элементов с несколькими типами, ни одна из них не работает:

 var arr = ["Hello", -3, 4.5, "Hi"] var arr2:AnyObject = ["hi", -3.4, 2] arr[0...2] = [-1, -6.7, "hello"] // Cannot assign to the result of this expression arr.append(1.2) // 'NSArray' does not have a member named 'append' arr += [1, "Error", -3.2] // Could not find an overload for '+=' that accepts the supplied arguments arr2.append("hello") // 'AnyObject' does not have a member named 'append' arr.arrayByAddingObject("This works!") arr2.arrayByAddingObject("This works too!") 

Я понимаю, что когда я использую AnyObject, мой массив становится NSArray (на самом деле NSMutableArray). Как я могу создать обычный swift-массив с типом AnyObject, поэтому я могу использовать полезные операции, такие как '+ =' или такие функции, как append. (Извините за мой плохой английский)

  • Xcode 6: Как сделать вид изображения заполнять экран на всех устройствах? Авто макет не работает?
  • Кнопки стилизации в IOS Xcode
  • Xcode 6 и Cocoapods не правильно ссылаются на рамки iOS
  • Ярлык для xcode «вернуться к последнему месту» в том же файле?
  • Xcode 6 добавляет две точки (периоды) при кодировании в Swift для прогнозирования
  • XCode 6.0.1 Enterprise In House Distribution не создает ipa / plist
  • Как сопоставить сторонние учетные данные приложения с идентификатором iOS touch в iOS8?
  • не может импортировать встроенную инфраструктуру с помощью xcode 6 GM
  • 2 Solutions collect form web for “Как добавить новый элемент в мой многотипный массив в Swift”

    Вы должны объявить массив как AnyObject[]

     var arr: AnyObject[] = ["Hello", -3, 4.5, "Hi"] var arr2: AnyObject[] = ["hi", -3.4, 2] arr[0...2] = [-1, -6.7, "hello"] arr += "hello" arr.append([1, "Error", -3.2]) arr2 += ["hi", "hiya"] arr2.append("hello") 

    Кажется, что есть ошибка, когда вы пытаетесь добавить массив с отрицательным значением с плавающей запятой

     arr += [1, "No Error", 3, -3] arr += [-1, "No Error", 3, 3] arr += -3.2 // no error arr += [1, "Error", -3.2] 

    Таким образом, вы можете разрешить свои первые 4 ошибки, объявив массивы как:

     var arr:Array<Any> = ["Hello", -3, 4.5, "Hi"] var arr2:Array<Any> = ["hi", -3.4, 2] arr[0...2] = [-1, -6.7, "hello"] arr.append(1.2) arr += [1, "Error", -3.2] arr2.append("hello") 

    Теперь, когда они представляют собой Swift Arrays а не NSArrays , вы не можете вызвать arrayByAddingObject на них.

    Кажется, что приведение в NSArray будет работать, но это приводит к сбою компилятора (на игровой площадке).

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