我在下面的代码中做了什么导致我得到错误?

时间:2017-11-07 09:40:51

标签: ios swift compiler-errors

我收到以下错误:

1)类型' UITableViewCell'的非可选表达式用于检查选项

2)类型' UITableViewCell的价值'没有会员' congigureCell' 请

static final EnumMap<EnumType , Boolean> visibilityMap

4 个答案:

答案 0 :(得分:2)

1)!

结尾处的标记
countryList.dequeueReusableCell(withIdentifier: "cell")!

使用强制展开使其不可选,所以你不应该在中检查它,如果让,或者更好的方法就是删除!标记

2) congigureCell 可能是不同类的方法,而不是 UITableViewCell 。您应该通过此类替换 UITableViewCell 来投射它

答案 1 :(得分:1)

  1. ! mark用于强制解包可以为nil的可选值。但是“if let”和“guard let”已经检查了选项,所以你不需要!标记。
  2. 只需使用

    if let cell:UITableViewCell = countryList.dequeueReusableCell(withIdentifier: "cell") as UITableViewCell
    
      此行中的
    1. 单元格为“ UITableViewCell ”,但是congigureCell不是UITableViewCell的成员。 如果您想使用自己的单元格(例如 MyCell ),则应将其转换为MyCell。
    2. let myCell = cell as! MyCell

答案 2 :(得分:1)

确保您已完成以下步骤。

  1. 将故事板中的单元格标识符添加到自定义单元格。即“细胞”
  2. 通过情节提要或代码将YourTableview的委托和数据源分配给YOURViewController.swift
  3. 使用表的数据源在YOURViewController.swift访问单元格中 视为。
  4. 添加自定义类的子类UITableViewCell并将其分配给 故事板中的旅游单元。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if let cell = countryList.dequeueReusableCell(withIdentifier: "cell") as! YOURTableViewCellClass  {
    
        let text: String!
    
        if inSearchMode {
    
            text = filteredCountriesList[indexPath.row]
    
        } else {
    
            text = countriesList[indexPath.row]
        }
    
        cell.congigureCell(text: text) // Error 2 happens here
    
        return cell }
    

答案 3 :(得分:1)

1.取消dequeueReusableCellWithIdentifier:使用dequeueReusableCellWithIdentifier:forIndexPath:后者永远不会提供nil值,因此您不必担心错误&#39;。

2.UItableViewCell没有像你的情况那样配置cell或congigureCell而是你必须创建一个自定义tableViewCell并添加函数作为configureCell()然后在这行

如果让cell:UITableViewCell = countryList.dequeueReusableCell(withIdentifier:&#34; cell&#34;)!作为UITableViewCell

替换为UITableViewCell ,将替换为yourCustomTableViewCellClass