有没有办法从NSSet(或任何非本机Swift集合)中转换元素,并在一个步骤中将每个元素转换为一个类型.目前我正在这样做
// "zoo" is an NSOrderedSet
for animal in zoo {
if let animal = animal as? Animal {
if animal.needFeeding {
// Feed the animal
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上看起来有点笨拙.该集来自CoreData,因此我必须使用NSSet.
Mar*_*n R 23
您可以case let
在for
循环中使用模式匹配:
for case let animal as Animal in zoo {
if animal.needFeeding {
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这将跳过不是(子类)实例的元素 Animal
.
为了完整起见,NSOrderedSet
它只是集合和数组的组合,您可以使用其中之一进行迭代,将其强制转换为 SwiftSet
或Array
类型:
for animal in zoo.set as! Set<Animal> {
if animal.needFeeding {
}
}
Run Code Online (Sandbox Code Playgroud)
或者
for animal in zoo.array as! [Animal] {
if animal.needFeeding {
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3093 次 |
最近记录: |