Ios 使用swift的XCode 6 beta 7错误
以前的版本是beta 6,我的项目运行良好。我刚刚将我的xcode更新到版本6 beta 7,出现了错误,真的不知道如何修复它Ios 使用swift的XCode 6 beta 7错误,ios,xcode,swift,Ios,Xcode,Swift,以前的版本是beta 6,我的项目运行良好。我刚刚将我的xcode更新到版本6 beta 7,出现了错误,真的不知道如何修复它 var currentcell = collectionView.cellForItemAtIndexPath(indexPath) var posx = currentcell.frame.origin.x-collectionView.contentOffset.x 错误报告:“UICollectionViewCell?”没有名为“frame”的成员 Xcode
var currentcell = collectionView.cellForItemAtIndexPath(indexPath)
var posx = currentcell.frame.origin.x-collectionView.contentOffset.x
错误报告:“UICollectionViewCell?”没有名为“frame”的成员
Xcode 6 beta 7建议我添加?在当前单元格之后。
我把它改成了
var posx = currentcell?.frame.origin.x-collectionView.contentOffset.x
但仍然存在错误:错误报告:可选类型“CGFloat”的值未展开;你想用“!”吗还是“?”?
有人能帮忙吗?试试这个:
if currentcell != nil
{
var posx = currentcell!.frame.origin.x-collectionView.contentOffset.x
}
这是正确的。在中使用
?
currentcell?.frame.origin.x
使整个表达式成为可选表达式(CGFloat?
)。不能对选项进行算术运算。您必须首先展开该值
当currentCell
为nil
时,您希望posX
是什么
您可能要做的是强制展开单元格值:
var posX = currentcell!.frame.origin.x - collectionView.contentOffset.x
在较旧的Beta中,大多数obj-c类型都是显式展开的选项(
UITableViewCell!
),但其中一些被制成纯选项(UITableViewCell?
)。请注意,在某些情况下,currentCell
为nil
。您应该处理这些情况。为避免在没有返回给定索引的单元格时发生运行时崩溃,请执行以下操作:
if let currentcell = collectionView.cellForItemAtIndexPath(indexPath) {
var posX = currentcell.frame.origin.x - collectionView.contentOffset.x
// .. do something
}
else {
// ... there was no cell so do something else
}
我没有?一开始,但是xcode 6 beta 7建议我添加?在那之后。@TomSawyer您可能想使用
代码>。在较旧的Beta中,大多数obj-c类型都是显式展开的选项(UITableViewCell!
),但其中一些被制成纯选项(UITableViewCell?
)。这可能造成了不同。许多TK,它现在工作后添加!后电流单元