gpt4 book ai didi

ios - 无法使用类型的参数列表调用 'dispatch_once'

转载 作者:行者123 更新时间:2023-11-28 11:16:06 25 4
gpt4 key购买 nike

我尝试使用dispatch_once,但是我得到了这种错误

'dispatch_once' error

var onceToken : dispatch_once_t = 0
dispatch_once(&onceToken, { () -> Void in
self.myCollectionView.scrollToItemAtIndexPath(NSIndexPath.indexAtPosition(1), atScrollPosition: UICollectionViewScrollPosition.Left, animated: false)
})

最佳答案

首先,你不能这样使用onceToken。正如我在评论中所写,请阅读 this .

Swift 编译器错误/警告有时会产生误导。他们正在改进它们,但是......当这种错误发生并且我没有在我的代码中看到问题时,我将在我的闭包末尾添加简单的 return (以匹配闭包类型签名)。像这样...

dispatch_once(&onceToken, { () -> Void in
self.myCollectionView.scrollToItemAtIndexPath(NSIndexPath.indexAtPosition(1),
atScrollPosition: UICollectionViewScrollPosition.Left, animated: false)
return
})

...这让编译器更快乐,现在您看到了真正的问题...

Cannot invoke 'indexAtPosition' with an argument list of type '(Int)'

... 那是因为您在 NSIndexPath 类上调用方法 indexAtPosition,这不是类方法。你必须在那里传递 NSIndexPath 对象。

如果你想滚动到第一个项目,你必须这样调用它:

dispatch_once(&onceToken) {
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
self.myCollectionView.scrollToItemAtIndexPath(indexPath, atScrollPosition: .Left, animated: false)
}

关于ios - 无法使用类型的参数列表调用 'dispatch_once',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31694906/

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