在委托方法中,我得到一个自定义对象类型的“结果”数组,我想循环遍历数组元素。我现在做以下,这是有效的
for result in results {
if result is XYZClass {
//This Works!
}
}
有没有办法在for循环中输入对象以避免写两行? swift允许这个吗?用于在Objective-C中相当容易地完成此操作
for (XYZClass *result in results) {
}
但是,我没有在Swift中取得成功。我试过没有运气的显式演员。
for result as XYZClass in results {
//ERROR: Expected ‘;’ in ‘for’ statements
}
for result:AGSGPParameterValue in results {
/* ERROR: This prompts down cast as
for result:AGSGPParameterValue in results as AGSGPParameterValue { }
which in turn errors again “Type XYZClass does not conform to Sequence Type”
*/
}
任何帮助表示赞赏
试试这个:
for result in results as [XYZClass] {
// Do stuff to result
}
根据你使用for循环的方式,最好使用compactMap
(或者如果你在Swift 4.1之前使用flatMap
)将你的对象映射到一个新数组:
let onlyXyzResults: [XYZClass] = results.compactMap { $0 as? XYZClass }
现在只有一个数组XYZClass对象,删除了所有其他对象类型。