2016-11-28 21 views
2

这是一个后续行动这样一个问题:保持与flatMap指数在斯威夫特

flatMap and `Ambiguous reference to member` error

有我使用下面的代码的Record秒的数组转换成的Person秒的数组:

let records = // load file from bundle 
let persons = records.flatMap(Person.init) 

由于此转换可能需要一些时间来处理大文件,因此我希望监视一个索引以将其输入到进度指示器中。

这是可能与这flatMap建设?我想到的一种可能是在init函数中发送一个通知,但我认为从flatMap内计算记录也是可能的?

回答

9

是!使用enumerated()

let records = // load file from bundle 
let persons = records.enumerated().flatMap { index, record in 
    print(index) 
    return Person(record) 
} 
+0

令人惊叹,多么简单和优雅! – Koen

+0

欢迎来到斯威夫特! :p – Alexander