This question уже был дан ответ для более ранних версий Swift, но мне интересно, как добавить поддержку «for ... in» к классу в Swift 2. Похоже, что в новой версии Swift достаточно изменилось, чтобы сделать ответ значительно другим. Например, похоже, что вы должны использовать протокол AnyGenerator сейчас?Добавить 'for ... in' поддержку класса в Swift 2
ответ
Есть только два изменения :
GeneratorOf
теперь называетсяAnyGenerator
.GeneratorOf.init(next:)
теперь функцияanyGenerator()
Это дает нам:
class Cars : SequenceType {
var carList : [Car] = []
func generate() -> AnyGenerator<Car> {
// keep the index of the next car in the iteration
var nextIndex = carList.count-1
// Construct a GeneratorOf<Car> instance, passing a closure that returns the next car in the iteration
return anyGenerator {
if (nextIndex < 0) {
return nil
}
return self.carList[nextIndex--]
}
}
}
(. Я редактировал связанный ответ, соответствующий синтаксис Swift 2)
Это происходит прямо из одного из комментариев на ответ на этот вопрос ...
Теперь, когда мы имеем расширение протокола в Swift 2.0, это работает немного по-другому. Вместо того, чтобы в соответствии с SequenceType, один должен просто подкласс AnyGenerator и переопределить метод следующий() для возврата необходимого элемента в итерации (в данном случае, следующий (?) -> Автомобиль)
Да, я это видел, но я хотел бы получить полный пример ... Я попытался реализовать его, и это было не так прямолинейно, как это звучит – markdb314
Не могли бы вы добавить свой код на свой вопрос, показывая, что вы пробовали? – pbush25
Я не понимаю, почему этот комментарий был сделан. 'SequenceType' по-прежнему является протоколом для' for ... in'. Нет необходимости подклассифицировать 'AnyGenerator' для простых применений, подобных этому (хотя это законно, если вы хотите). –
- 1. Swift for..in и for loop
- 2. Swift How to for in in over
- 3. Swift JSON for-in loop
- 4. Mocking in Swift for XCTest
- 5. NSIntegers for Doubles in Swift
- 6. Сохранить a for in loop in swift
- 7. withUnsafePointer in Swift 2
- 8. Sigabrt in Swift 2
- 9. Swift: for-in с двумя значениями
- 10. Функция класса Swift, возвращающая пустой после цикла for-in
- 11. Как управлять потоком на нескольких петлях for-in swift 2?
- 12. Добавить задержку в цикл for в swift
- 13. NESTED FOR LOOP - Swift 2
- 14. Обработчик завершения в For/In loop - swift
- 15. Объем индекса в цикле for-in - swift
- 16. Создание класса в Swift 2
- 17. Wordpress - Добавить поддержку более 2 меню
- 18. swift loop for ... in core data
- 19. Странное поведение for loop в Swift 2
- 20. Segue in swift 2 issue
- 21. Parse.com subclassing in Swift 2
- 22. Json Parsing in swift 2
- 23. Добавить имя столбца в цикл DataFrame for for in pandas
- 24. Iterate for Loop Overtime in Swift
- 25. ACL Role for admin in parse swift
- 26. Swift count string size in for loop
- 27. Activity Picker for Web View in Swift
- 28. Добавить свойство строки в UIButton in Swift
- 29. сумма результатов для for-in loop, in swift
- 30. Swift 2 Восстановить значение класса
[Этот ответ ] (http://stackoverflow.com/a/31074933/2227743) на странице, с которой вы связаны, по-видимому, решает проблему. – Moritz
Это не отвечает на мой вопрос. Этот код даже не компилируется в Swift 2 – markdb314
Покажите свой код, что вы попробовали? Что именно не работает? – robertvojta