众所周知,我们可以使用for..in
循环遍历Arrays
或Dictionaries
。但是,我想这样迭代自己CustomClass
:
for i in CustomClass {
someFunction(i)
}
CustomClass
为了使之成为可能,必须支持哪些操作/协议?
假设您有一个类“ Cars”,希望使用for..in循环进行迭代:
let cars = Cars()
for car in cars {
println(car.name)
}
最简单的方法是将AnyGenerator与以下类一起使用:
class Car {
var name : String
init(name : String) {
self.name = name
}
}
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 AnyGenerator<Car> instance, passing a closure that returns the next car in the iteration
return anyGenerator {
if (nextIndex < 0) {
return nil
}
return self.carList[nextIndex--]
}
}
}
要尝试一个完整的工作示例,请添加上面的两个类,然后尝试像这样使用它们,并添加几个测试项:
let cars = Cars()
cars.carList.append(Car(name: "Honda"))
cars.carList.append(Car(name: "Toyota"))
for car in cars {
println(car.name)
}
就是这样,很简单。
更多信息:http://lillylabs.no/2014/09/30/make-iterable-swift-collection-
type-sequencetype
本文向大家介绍Swift遍历,包括了Swift遍历的使用技巧和注意事项,需要的朋友参考一下 例子
WebSocket 使用一种被称作“Upgrade handshake(升级握手)”的机制将标准的 HTTP 或HTTPS 协议转为 WebSocket。因此,使用 WebSocket 的应用程序将始终以 HTTP/S 开始,然后进行升级。这种升级发生在什么时候取决于具体的应用;可以在应用启动的时候,或者当一个特定的 URL 被请求的时候。 在我们的应用中,仅当 URL 请求以“/ws”结束时,我
问题内容: 我正在尝试在Swift操场上编写一段非常简单的代码。 但是,我总是在第3行出现错误。 “字符串”没有名为“生成器”的成员 有什么想法为什么不起作用?注意:我正在使用Swift 2.0(字符串和字符)在Xcode 7中工作。 问题答案: 从Swift 2开始,不符合。但是,您可以在使用属性。返回符合的,因此可以通过循环进行迭代: 另外,您可以添加扩展名使其符合: 虽然,我确定Apple有
问题内容: 我从网址获取此json,返回的JSON为: 我想在IOS的TableView中显示名称。 我的Swift2代码是: 如何遍历JSON数组以在表视图的单元格中放置哪个名称? 问题答案: 该变量是一个字典数组,因此您可以使用 在 Swift 3中 ,未指定的JSON类型已更改为
问题内容: 我对Xcode在《 Swift编程语言指南》中给我进行此实验的答案感到有些困惑: 我知道随着字典的使用,最大的数字被设置为变量。但是,我对为什么Xcode会说要根据每次测试设置5次,1次或3次感到困惑。 查看代码时,我发现应该单独在“ Prime”中将其设置6次(2、3、5、7、11、13)。然后,它应该跳过“斐波那契”中的任何数字,因为这些数字都小于最大数字,该数字当前已从“ Pri