2015-03-19 3 views
2

В моем первом проекте Swift я пытаюсь сделать копию массива и его ссылки на таможенные объекты. После нескольких исследований я понял, что лучший способ - использовать copy() или unshare(). Но в моем случае таких методов не существует!swift позволяют использовать функцию copy() или unshare()

Например, я объявляю переменную данные:

var datas:Array<ChartColor> = [ChartColor](); 

(ChartColor является пользовательский класс расширения NSObject)

Но если я пытаюсь скопировать ДАННЫЕ в другой массив, например:

var datasCopied:Array<ChartColor> = self.datas.copy(); 

копия() методы не существует, и появляются Compiler Error:

«Массив» не имеет член с именем «копия»

Мои Xcode версии 6.2 (6C131e)

Как сделать копию в моем случае?

+2

http://blog.human-friendly.com/swift-arrays-beta-3-hooray «* Копия() и удалить из списка() функции ушли *, потому что есть удалить из списка по существу, стал поведением по умолчанию » – user2864740

ответ

1

Если посмотреть определение массива в Swift (Cmd-клик) вы увидите, что массивы в стрижа, по существу struct «s, и:

Structures and Enumerations Are Value Types

Тип значения тип которого значение копируется, когда оно назначается переменной или константе, или когда оно передается функции.

... поэтому для копирования массива достаточно простого назначения.

Например:

var source = [1, 2, 3] 
var destination = source // Copy 

source[0] = 10 

source      // [10, 2, 3] 
destination     // [1, 2, 3] 
+0

Спасибо за ваш ответ, это помогло мне! Проблема заключалась в том, чтобы не копировать, а из-за ошибки в другом методе моего проекта, который изменяет свойства настраиваемого объекта ChartColor и затем исчезает в моем представлении коллекции. Меня беспокоил недостаток метода копирования и нераскрытия! –

Смежные вопросы