Ios 用Swift编写的类不能是Nib所有者(崩溃)
下面是我正在尝试做的:在nib文件中设计一个视图。使用Swift编写的类返回视图和nib所有者。在Swift中实例化nib的视图。导致崩溃的代码:Ios 用Swift编写的类不能是Nib所有者(崩溃),ios,swift,nib,key-value-coding,Ios,Swift,Nib,Key Value Coding,下面是我正在尝试做的:在nib文件中设计一个视图。使用Swift编写的类返回视图和nib所有者。在Swift中实例化nib的视图。导致崩溃的代码: var myViewOwner: MyViewOwner? NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil) // crash 。。。有误: [NSObject 0x7bfa0cc0 setValue:forUndefinedKey:]:此类
var myViewOwner: MyViewOwner?
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil) // crash
。。。有误:
[NSObject 0x7bfa0cc0 setValue:forUndefinedKey:]:此类不是
密钥值编码与密钥myView兼容
因此,我有:具有空白视图的nib文件,其中视图类型为MyClass
,nib所有者类型为MyViewOwner
。这两门课都是用Swift写的
我已经尝试的内容(初始尝试):
我将只发布MyViewOwner类代码,因为MyView.swift只是一个类定义
MyViewOwner.swift
class MyViewOwner {
@IBOutlet weak var myView: MyView
}
导致上述错误
第二次尝试NSObject:
当然,Swift对象不符合KVO,因此我尝试:
class MyViewOwner: NSObject {
@IBOutlet var myView: MyView
}
。。。以及:
class MyViewOwner: NSObject {
@IBOutlet strong var myView: MyView = MyView() // we need to set something since it's 'strong'
}
两者都导致上述错误
第三次尝试@objc注释:
同样的错误也没有帮助
我做错了什么?我应该以什么方式用swift编写所有代码以使其工作
更新:在xCode中拥有并查看设置 更新:所有者查看连接
如果这是您真正的代码,那么这段代码毫无意义:
var myViewOwner: MyViewOwner?
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil)
第一行中的变量myViewOwner
未初始化;那里没有物体。因此,该对象不能像您在第二行中要求它做的那样,充当任何东西的所有者:
也许你的意思是:
let myViewOwner = MyViewOwner() // or whatever the initializer is
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil)
如果这段代码真的是您的代码,那么它毫无意义:
var myViewOwner: MyViewOwner?
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil)
第一行中的变量myViewOwner
未初始化;那里没有物体。因此,该对象不能像您在第二行中要求它做的那样,充当任何东西的所有者:
也许你的意思是:
let myViewOwner = MyViewOwner() // or whatever the initializer is
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil)
nib文件中“files owner”的自定义类设置正确吗?我添加了带有owner和view设置的屏幕截图。您可以将项目发布到github或类似站点吗?这将是伟大的,能够看到它和实验它。是“文件所有者”的自定义类在nib文件中设置正确吗?我添加了业主和视图设置屏幕截图你可以发布在github或类似的项目?我很高兴你能在你的问题中准确地重现你的代码。我对这段代码感到非常惊讶,我担心这只是问题本身的一个输入错误!:)-说到这里,您发现了一个很好的例子,Swift编译器并没有它应有的智能;你可能应该向苹果公司提交一份bug报告,抱怨编译器一开始就不应该让代码运行。发布于bugreport.Apple.com,案例编号:17738661。开放雷达链接:我很高兴你在问题中准确地复制了你的代码。我对这段代码感到非常惊讶,我担心这只是问题本身的一个输入错误!:)-说到这里,您发现了一个很好的例子,Swift编译器并没有它应有的智能;你可能应该向苹果公司提交一份bug报告,抱怨编译器一开始就不应该让代码运行。发布于bugreport.Apple.com,案例编号:17738661。开放雷达链路: