iOS的 - 无法将类型LazyMapRandomAccessCollection的价值 - 斯威夫特3
我试图让写在斯威夫特2,新的旧的应用程序,更新到最新的功能最全,以适用于iOS准备转换斯威夫特3 11和Swift 4(即使已经晚了)。iOS的 - 无法将类型LazyMapRandomAccessCollection的价值 - 斯威夫特3
我翻译的过程后留下的一些错误,但这里有一个我无法修复。
以下是错误,从我的收藏夹刷新方法来:
fileprivate func checkFavorites() {
if !DataUtils.isBackgroundRefreshInProgress() {
let ids = favoritesTableViewController!.favoriteCityList?.map({ $0.id })
if let ids = ids, ids.count > 0 {
DataUtils.refreshCity(ids) {() -> Void in
self.favoritesTableViewController.refresh()
})
}
}
}
下面是一些原型和信息有关的变量:
var favoriteCityList: Results<City>?
很明显,你会发现,我用的境界。
这里是方法refreshCity的原型:
class func refreshCity(cityIds: [Int], withHandler: @escaping (() -> Void)) {}
这是我在这行得到了错误:
DataUtils.refreshCity(ids) {() -> Void in
无法将类型的价值
'LazyMapRandomAccessCollection<Results<City>, Int>' to expected element type Int
我应该在我的原型方法来改变,当我USI NG列表<>或结果<>容器?
你只需要转换Results<City>
到Array<City>
所以map
操作的结果将是一个数组为好,而不是LazyMapRandomAccessCollection
。
由于Results
是Sequence
,您可以使用Array的初始化程序接受Sequence
来创建一个结果集合中的Array。
let ids = Array(favoritesTableViewController!.favoriteCityList?).map({ $0.id })
完美。正是我想要的。为什么我总是觉得过度复杂... – Balanced
没有更多的上下文,很难给出确切的答案。 “favoriteCityList”的类型是什么?是'id'应该是一个'Int'和'ids'的'[INT]'? –
ID是int所以IDS是一个[INT]但是当我使用地图上的结果类型,它搅乱一切,我不认识的类型了 –
Balanced