函数中缺少返回预期返回'UICollectionViewCell'的函数

时间:2015-11-25 21:12:45

标签: ios xcode swift uicollectionview

所以我的UICollectionView有2个单元格:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
    {
        var imageCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as? CollectionViewCell
        var videoCell = collectionView.dequeueReusableCellWithReuseIdentifier("cellVideo", forIndexPath: indexPath) as? CollectionViewCell

        if (imageCell != nil) { // Image Cell
            println("image cell exist")
            return imageCell!
        }

        if (videoCell != nil) { // Video Cell
            println("video cell exist")
            return videoCell!
        }
    }

不知怎的,我收到错误Missing return in a function expected to return 'UICollectionViewCell'。当我同时返回if时,为什么会这样?我可能认为这是因为我使用返回2次,或者?

修改

我也试过这个,但也不起作用:

var myUrl = "Url to file from web"
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
    {
        var imageCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as? CollectionViewCell
        var videoCell = collectionView.dequeueReusableCellWithReuseIdentifier("cellVideo", forIndexPath: indexPath) as? CollectionViewCell

        if myUrl.rangeOfString(".png") != nil{ // If string contains .png it should use a imageCell
            println("exists")
            return imageCell!
        }
        if myUrl.rangeOfString(".mp4") != nil{ // If string contains .mp4 it should use a videoCell
            println("exists")
            return videoCell!
        }
    }

2 个答案:

答案 0 :(得分:1)

您可能会遇到 imageCell == nil videoCell == nil 的情况。

在这种情况下,您的代码目前不会返回任何内容。如果您确定其中一个不会是零,可以尝试类似

$str = 'tina=gdjf==5=?hdhfg=oliver-people';

$last = end(explode('=',$str));

print $last;
/* will output
oliver-people
*/

答案 1 :(得分:0)

如果满足条件,您只能返回一个单元格。如果两个if语句都没有运行,则根本不返回任何内容。 (在所有情况下都必须返回一个单元格)

如果没有满足任何条件,请确保返回了一个单元格,这通常被认为是默认的返回值。

尝试在方法中使用if,else if,else,这样您将始终返回一个单元格,如果您的imageCell!= null,您将阻止不必要的条件检查。

至于你的实际方法,我不确定这对于cellForItemAtIndexPath方法是否是正确的实现。但我会回答你的问题......:D