【问题标题】:XCode 6 beta 7 error with swiftXCode 6 beta 7 错误与 swift
【发布时间】:2014-10-29 04:29:18
【问题描述】:

以前的版本是 beta 6 ,我的项目运行良好。我刚刚将我的 xcode 更新到版本 6 beta 7 并出现错误,真的不知道如何修复它。

var currentcell = collectionView.cellForItemAtIndexPath(indexPath)
var posx = currentcell.frame.origin.x-collectionView.contentOffset.x

错误报告:“UICollectionViewCell?”没有名为“框架”的成员 Xcode 6 beta 7 建议我添加?在当前单元格之后。 我把它改成

var posx = currentcell?.frame.origin.x-collectionView.contentOffset.x

但仍然错误:错误报告:可选类型“CGFloat?”的值未拆封;你的意思是用'!'要么 '?'? 有人可以帮忙吗?

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    试试这个:

    if currentcell != nil
    {
        var posx = currentcell!.frame.origin.x-collectionView.contentOffset.x
    }
    

    【讨论】:

      【解决方案2】:

      这是正确的。在

      中使用?

      currentcell?.frame.origin.x 使整个表达式成为可选的 (CGFloat?)。您不能对选项进行算术运算。您必须先解开该值。

      currentCellnil 时,您期望posX 是什么?

      您可能想要做的是强制解开单元格值:

      var posX = currentcell!.frame.origin.x - collectionView.contentOffset.x
      

      在较早的 beta 版本中,大多数 obj-c 类型都是明确展开的可选项 (UITableViewCell!),但其中一些被制成纯可选项 (UITableViewCell?)。请注意,有些情况下currentCellnil。你应该处理这些情况。

      【讨论】:

      • 我没有?一开始,但 xcode 6 beta 7 建议我添加?之后。
      • @TomSawyer 可能您想使用!。在较旧的 beta 版本中,大多数 obj-c 类型都是明确展开的可选项 (UITableViewCell!),但其中一些被制成纯可选项 (UITableViewCell?)。这可能有所作为。
      • 很多tks,添加后现在可以使用了!在当前单元格之后
      【解决方案3】:

      为避免给定 indexPath 没有返回单元格时运行时崩溃:

      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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-04
        • 2014-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多