尝试创建一个新变量以便追加数组时,“表达式类型不明确,需要更多上下文信息”

4

我是一名编码和Swift的新手,现在正在尝试创建一个小型应用程序。我创建了以下代码:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    let cell = tableView.cellForRowAtIndexPath(indexPath)
    var selectedSubject = toBeAddedSubjects[indexPath.row] as Subject
    selectedSubject.name = cell.nameLabel
    selectedSubject.semester = cell.semesterLabel

    if cell?.accessoryType == UITableViewCellAccessoryType.Checkmark {
    cell?.accessoryType = UITableViewCellAccessoryType.None;

    } else {
    cell?.accessoryType = UITableViewCellAccessoryType.Checkmark;
    selectedCellsData.append(newElement: selectedSubject)
    }
    }

我现在遇到了错误:

没有更多的上下文,无法确定表达式的类型

这个错误是针对 cell.nameLabelcell.semesterLabel 的。然而,在之前的代码中已经使用过它们了:

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("AddSubjectCell", forIndexPath: indexPath) as! SubjectCell

    let subject = Subjects[indexPath.row] as Subject
    let Semester = "\(subject.semester)"

    cell.nameLabel.text = subject.name

    cell.semesterLabel.text = "Semester " + Semester

    return cell

}

我的目标是使第一个代码末尾的附加功能起作用,因此我需要将单元格信息转换为selectedSubject的正确类型。

var selectedCellsData = [ Subject(name: "Initial Subject", semester: 0)]

1
欢迎来到SO,非常不错的第一篇帖子。顺便提一下,我对你的内联代码进行了一些小的格式更改(在SO上惯例是使用反引号(位于美式键盘1旁边的按键))。我的编辑将在审核后才会显示。 - Richard Erickson
1个回答

1

看起来你在第二个示例代码中将单元格转换为SubjectCell,但在问题代码中没有这样做。确保将单元格转换为自定义类,以便访问自定义属性!

let cell = tableView.cellForRowAtIndexPath(indexPath) as! SubjectCell

此外,您正在将UILabel分配给 Subject name semester 属性。您是否意味着分配这些标签的文本?
selectedSubject.name = cell.nameLabel.text
selectedSubject.semester = cell.semesterLabel.text

谢谢!我已经更改了类型转换。没错,那正是我想做的,不过第二个标签是Int类型。我目前遇到的问题是关于append函数。这一切的意义在于选定的科目数据流入一个新数据集,我想将此数据集集成到另一个数据集中。我现在尝试使用'subjectsData.append(selectedCellsData)'来实现这一点。'subjectsData'数据集与'selectedCellsData'具有相同的结构(结构如上所述)。但是,我总是收到错误消息“无法使用“([Subject])”类型的参数列表调用'append'。你有什么想法该怎么做吗? - Elina
确保你的数组是可变数组,否则你将无法添加元素。 - jrisberg
这两个都是普通的NSArray,你需要NSMutableArrays才能进行追加。尝试将它们声明为NSMutableArrays并以此构建它们。 - jrisberg
我错了。对不起,看来我需要自己阅读一些资料。 - jrisberg
1
我建议您提出一个单独的问题或更新现有问题,只针对您遇到的追加问题,因为至少部分问题已经解决。这样更加专注,而且从技术上讲,这是一个独立的问题。 - jrisberg
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接