在委托方法中,我得到一个自定义对象类型的'results'数组,我想循环遍历数组元素。 我现在做了以下,这是有效的
for result in results {
if result is XYZClass {
//This Works!
}
}
有没有办法在for-loop中输入对象以避免写两行? 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”
*/
}
感谢任何帮助
答案 0 :(得分:7)
试试这个:
for result in results as [XYZClass] {
// Do stuff to result
}
答案 1 :(得分:1)
根据您使用for循环的方式,可能更可取的是使用compactMap
(或者如果您在Swift 4.1之前是flatMap
)将对象映射到新数组:
let onlyXyzResults: [XYZClass] = results.compactMap { $0 as? XYZClass }
现在,您仅具有一个数组XYZClass对象,而所有其他对象类型均已删除。