我目前正在尝试在swift中编写一个小应用程序,我有这些类:
masterTableViewController
addViewController
和deleteViewController
,每个都连接到a,就像名称已经告诉的那样,viewController。 masterTableViewController应该使用预定义的函数发送一些数据:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if(segue.identifier == "showDetails") {
var selectedIndexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()!
var deleteViewController:deleteViewController = segue!.destinationViewController as deleteViewController
deleteViewController.todoData = todoItems.objectAtIndex(selectedIndexPath.row) as NSDictionary
}
我想通过segue引用的控制器将当前行的数据发送到下一行。
这是我收到一条错误消息,指出deleteViewController不是可以分配给变量的类型。
但我真的不明白现在的问题是什么。基本上这应该工作,因为我只想创建一个我的类所属类型的新对象,并将其传递给我的视图控制器。
在参考资料中,我从一切工作中得到了这个代码。
答案 0 :(得分:6)
您正在混合类名和实例变量名。类名应为大写:MasterTableViewController,AddViewController,DeleteViewController
首先,尝试通过选择不同的名称来区分类名和实例变量名,即:
var dvc:deleteViewController = segue!.destinationViewController as deleteViewController
dvc.todoData = ...
看看它是否有效
答案 1 :(得分:2)
另一种情况,你可能会神秘地使用未声明的类型':类型(这里是DeleteViewController类)是通过更改名称'来重命名的文件中定义的。 '公用事业'的文本框窗格。然后Xcode MIGHT不认为该文件是目标的成员,即使目标成员资格中的复选框是' &Utilities'部分窗格显示文件是项目目标的成员。解决方法是取消选中并重新检查使文件成为目标成员的复选框。 Xcode将重新索引项目文件,并希望现在将文件视为目标的成员。
答案 2 :(得分:0)
我意识到你已经有了一个可以接受的答案,但是我已经追了很久这个错误,最后找到了我的问题的原因所以也许它可以帮助别人保持理智。
我在尝试集成Google admob sdk时遇到了这个问题。
以下是我调试的步骤:
显然Xcode并不喜欢框架搜索路径中的连字符。
答案 3 :(得分:0)
如果要编译的类包含在单元测试模块中,但未定义的类不包括在内,则会发生这种情况。
您会发现该应用程序已编译并运行,但编译错误可能会显示在源代码中。
打开右侧栏并查看目标会员设置。它们应该对两个类都一致。