gpt4 book ai didi

objective-c - SWIFT 3.0 迁移错误 - 通用 Obj-C 类的扩展无法在运行时访问该类的通用参数

转载 作者:IT王子 更新时间:2023-10-29 05:19:50 25 4
gpt4 key购买 nike

我的这段代码在 Swift 2 中运行良好。

extension PHFetchResult: Sequence {
public func makeIterator() -> NSFastEnumerationIterator {
return NSFastEnumerationIterator(self)
}
}

自从我升级到 Swift 3

Extension of a generic Objective-C class cannot access the class's generic parameters at runtime

我不知道如何解决这个问题。非常感谢任何帮助!

最佳答案

此处报告了问题:https://bugs.swift.org/browse/SR-1576

但最终你不能在 Swift 3.0 中将 for in 与 PHFetchResult 一起使用。让我们看一些例子:

let collections = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: nil)
let collectionLists = PHCollectionList.fetchCollectionLists(with: .momentList, subtype: .momentListYear, options: nil)
let assets = PHAsset.fetchAssets(with: .image, options: nil)

您可以使用 PHFetchResult 的内置枚举(我推荐的解决方案):

collections.enumerateObjects(_:) { (collection, count, stop) in
//...
}
collectionLists.enumerateObjects(_:) { (collectionList, count, stop) in
//...
}
assets.enumerateObjects(_:) { (asset, count, stop) in
//...
}

或者通过索引访问每个对象:

for idx in 0 ..< collections.count {
let collection = collections[idx]
// ...
}
for idx in 0 ..< collectionLists.count {
let collectionList = collectionLists[idx]
// ...
}
for idx in 0 ..< assets.count {
let asset = assets[idx]
// ...
}

关于objective-c - SWIFT 3.0 迁移错误 - 通用 Obj-C 类的扩展无法在运行时访问该类的通用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com