ios - 预期返回 'UITableViewCell' 的函数中缺少返回值

标签 ios swift uitableview

编辑 1:修改后的代码 - 仍然不起作用。

我有两个自定义单元格。

第一个单元格(且仅第一个单元格)的类型为 CurrentIssueFrontCoverTableViewCell,其余单元格的类型为 CurrentIssueArticlesTableViewCell。在声明我的 cellForRowAtIndexPath 函数时,我收到标题中描述的错误。有办法解决这个问题吗?为什么它没有检测到我正在“if”循环中返回单元格?

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell {

    let row = indexPath.row

    if indexPath.row == 0 {

        let cellWithCoverImage = tableView.dequeueReusableCellWithIdentifier(CurrentIssueFrontCoverTableCellIdentifier, forIndexPath: indexPath) as! CurrentIssueFrontCoverTableViewCell

        if let currentIssueFrontCoverObject = currentIssueObjects.objectAtIndex(indexPath.row) as? IssueElement {

            let title = currentIssueFrontCoverObject.title ?? ""

            let timeStampDateObject = NSDate(timeIntervalSince1970: NSTimeInterval(currentIssueFrontCoverObject.timeStamp))
            let timeStampDateString = dateFormatter.stringFromDate(timeStampDateObject)

            let issueNumber = currentIssueFrontCoverObject.issueNumber ?? ""
            let volumeNumber = currentIssueFrontCoverObject.volumeNumber ?? ""

            let nodeID = currentIssueFrontCoverObject.nodeID ?? 0

            let imageURL = currentIssueFrontCoverObject.imageURL ?? ""


            cellWithCoverImage.request?.cancel()

            if let coverImage = self.imageCache.objectForKey(imageURL) as? UIImage {
                cellWithCoverImage.currentIssueFrontCoverImageView.image = coverImage
            } else {
                cellWithCoverImage.currentIssueFrontCoverImageView.image = nil
                cellWithCoverImage.request = Alamofire.request(.GET, imageURL).responseImage() { response in
                    if let coverImage = response.result.value {
                        self.imageCache.setObject(response.result.value!, forKey: imageURL)
                        cellWithCoverImage.currentIssueFrontCoverImageView.image = coverImage

                    } else {

                    }
                }
            }
        } else {

        }

        return cellWithCoverImage

        // Populating data in the "Articles" type cells

} else if indexPath.row >= 1 {

        let cellWithoutCoverImage = tableView.dequeueReusableCellWithIdentifier(CurrentIssueArticlesTableCellIdentifier, forIndexPath: indexPath) as! CurrentIssueArticlesTableViewCell

        if let currentIssueArticleObject = currentIssueObjects.objectAtIndex(indexPath.row) as? IssueElement {

            let title = currentIssueArticleObject.title ?? ""

            let timeStampDateObject = NSDate(timeIntervalSince1970: NSTimeInterval(currentIssueArticleObject.timeStamp))
            let timeStampDateString = dateFormatter.stringFromDate(timeStampDateObject)

            let author = currentIssueArticleObject.author ?? ""

            let issueNumber = currentIssueArticleObject.issueNumber ?? ""
            let volumeNumber = currentIssueArticleObject.volumeNumber ?? ""

            let articleContent = currentIssueArticleObject.articleContent ?? ""

            let nodeID = currentIssueArticleObject.nodeID ?? 0


            cellWithoutCoverImage.currentIssueArticlesHeadlineLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
            cellWithoutCoverImage.currentIssueArticlesHeadlineLabel.text = title

            cellWithoutCoverImage.currentIssueArticlesAuthorLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)
            cellWithoutCoverImage.currentIssueArticlesAuthorLabel.text = author

            cellWithoutCoverImage.currentIssueArticlesPublishDateLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)
            cellWithoutCoverImage.currentIssueArticlesPublishDateLabel.text = timeStampDateString

            return cellWithoutCoverImage

        } else {

        }
    }

    else {

    }
}

编辑 1:修改后的代码 - 仍然不起作用

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell {

    let row = indexPath.row

    switch(row) {


    case 0:

        let cellWithCoverImage = tableView.dequeueReusableCellWithIdentifier(CurrentIssueFrontCoverTableCellIdentifier, forIndexPath: indexPath) as! CurrentIssueFrontCoverTableViewCell

        if let currentIssueFrontCoverObject = currentIssueObjects.objectAtIndex(indexPath.row) as? IssueElement {

            let title = currentIssueFrontCoverObject.title ?? ""

            let timeStampDateObject = NSDate(timeIntervalSince1970: NSTimeInterval(currentIssueFrontCoverObject.timeStamp))
            let timeStampDateString = dateFormatter.stringFromDate(timeStampDateObject)

            let issueNumber = currentIssueFrontCoverObject.issueNumber ?? ""
            let volumeNumber = currentIssueFrontCoverObject.volumeNumber ?? ""

            let nodeID = currentIssueFrontCoverObject.nodeID ?? 0

            let imageURL = currentIssueFrontCoverObject.imageURL ?? ""


            cellWithCoverImage.request?.cancel()

            if let coverImage = self.imageCache.objectForKey(imageURL) as? UIImage {
                cellWithCoverImage.currentIssueFrontCoverImageView.image = coverImage
            } else {
                cellWithCoverImage.currentIssueFrontCoverImageView.image = nil
                cellWithCoverImage.request = Alamofire.request(.GET, imageURL).responseImage() { response in
                    if let coverImage = response.result.value {
                        self.imageCache.setObject(response.result.value!, forKey: imageURL)
                        cellWithCoverImage.currentIssueFrontCoverImageView.image = coverImage

                    } else {

                        return

                    }
                }
            }
        } else {

            break
        }

        return cellWithCoverImage;

        // Populating data in the "Articles" type cells



    default:

        let cellWithoutCoverImage = tableView.dequeueReusableCellWithIdentifier(CurrentIssueArticlesTableCellIdentifier, forIndexPath: indexPath) as! CurrentIssueArticlesTableViewCell

        if let currentIssueArticleObject = currentIssueObjects.objectAtIndex(indexPath.row) as? IssueElement {

            let title = currentIssueArticleObject.title ?? ""

            let timeStampDateObject = NSDate(timeIntervalSince1970: NSTimeInterval(currentIssueArticleObject.timeStamp))
            let timeStampDateString = dateFormatter.stringFromDate(timeStampDateObject)

            let author = currentIssueArticleObject.author ?? ""

            let issueNumber = currentIssueArticleObject.issueNumber ?? ""
            let volumeNumber = currentIssueArticleObject.volumeNumber ?? ""

            let articleContent = currentIssueArticleObject.articleContent ?? ""

            let nodeID = currentIssueArticleObject.nodeID ?? 0


            cellWithoutCoverImage.currentIssueArticlesHeadlineLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
            cellWithoutCoverImage.currentIssueArticlesHeadlineLabel.text = title

            cellWithoutCoverImage.currentIssueArticlesAuthorLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)
            cellWithoutCoverImage.currentIssueArticlesAuthorLabel.text = author

            cellWithoutCoverImage.currentIssueArticlesPublishDateLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)
            cellWithoutCoverImage.currentIssueArticlesPublishDateLabel.text = timeStampDateString

            return cellWithoutCoverImage;

        } else {
            break
        }
    }

}

最佳答案

您需要删除代码中的最后一个 else,因为它是空的。您也可以使用switch,例如:

switch(row){
    case 0:{
        // code with the CurrentIssueFrontCoverTableViewCell

        ....
        return cellWithCoverImage;
    }

    default:{

        // code with the CurrentIssueArticlesTableViewCell

        ...
        return cellWithoutCoverImage;
    }
}

关于ios - 预期返回 'UITableViewCell' 的函数中缺少返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175171/

相关文章:

ios - 在搜索栏中输入第二个字母后 TableView 不显示任何内容

ios - 使用 NSPredicate 根据作为 NSDictionary 的属性过滤对象的 NSArray

ios - 使用transitionStyle .scroll时如何将UIPageViewControllerSpineLocation设置为.mid

uitableview - 为某些行显式设置行高,但对其他行使用estimatedRowHeight

ios - 如何在 Swift 中从二维码保存 vCard

ios - 如何从 Swift 中的日期获取星期几

iphone - 将 MySQL 结果加载到 UITableView (iPhone)

iOS Facebook SDK 3.2.1 提要发布错误

ios - Carthage 不构建主框架

javascript - 使用 jquery 移动点击而不是点击