swift - 支持 iOS 12 和 13 时的 UITableView 和 Diffable 数据源

标签 swift uitableview uicollectionview ios13 uitableviewdiffabledatasource

我在我的项目中实现了 UITableView Diffable 数据源。在 iOS 13 上运行良好。 当我在 iOS 13 版本以下运行此应用程序时,它会警告我它仅在 iOS 13 上可用。所以我正在尝试为 iOS 13 以下版本实现 UITableView。

UITableView 代码已完成,但我在 iOS 13 上遇到此问题。

@available(iOS 13.0, *)
typealias UserDataSource = UITableViewDiffableDataSource<TblSection, YoutubeVideoModel>
@available(iOS 13.0, *)
typealias UserSnapshot = NSDiffableDataSourceSnapshot<TblSection, YoutubeVideoModel>

在这里,我声明数据源变量

class SearchViewController: UIViewController {
    @available(iOS 13.0, *)
    var datasource: UserDataSource! //Stored properties cannot be marked potentially unavailable with '@available'
    }

初始化数据源和快照

 @available(iOS 13.0, *)
    func configureDatasource(){
         datasource = UITableViewDiffableDataSource<TblSection, YoutubeVideoModel>(tableView: searchTblView, cellProvider: { (tableView, indexPath, modelVideo) -> VideoTableViewCell? in
        self.configurationCell(indexPath: indexPath)
    })
    }

    @available(iOS 13.0, *)
    func createSnapshot(users: [YoutubeVideoModel]){
    var snapshot = UserSnapshot()
    snapshot.appendSections([.first])
    snapshot.appendItems(users)
    datasource.apply(snapshot, animatingDifferences: true)
      } 

我在声明数据源时遇到此错误,请帮忙,谢谢。

//Stored properties cannot be marked potentially unavailable with '@available'

我在 CollectionView 上也面临同样的问题。

最佳答案

我们可以在计算属性上使用@available。但是,惰性变量被视为计算属性,因此您也可以对它们使用@available。这样做的好处是可以删除额外存储的属性和强制转换的样板 - 事实上,它不会在 iOS 10 之前的代码中留下该属性的任何证据。

您可以简单地这样声明:

@available(iOS 13.0, *)
lazy var datasource = UserDataSource()

您可以查看此要点以获取更多信息 https://gist.github.com/YogeshPateliOS/b2b13bfe5f7eef5cd7fa4a894cd35d5a

关于swift - 支持 iOS 12 和 13 时的 UITableView 和 Diffable 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61948884/

相关文章:

ios - 使用 JSON 对象填充 Swift 中的 TableView

uicollectionview - iOS7应用管理器中的UICollectionView "swipe-away"?

ios - 捏缩放后保持 collectionView 单元格位置

ios - 如何在 UICollectionview 中显示前 9 个图像?

ios - SwiftUI:onDismiss 没有被调用

ios - swift:swift 中的 SnapKit 不起作用

facebook - 没有这样的模块 'PFFacebookUtils'

uitableview - 在 ViewController 和 Swift 中的条件 segue 之间传递选定的行

iphone - 自定义 UITableViewCells 未在 UITableView 上重用

swift - 从 0° 转 359° 时,如何修复我的指南针应用程序进行完整转动?