Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 用Swift编写的类不能是Nib所有者(崩溃)_Ios_Swift_Nib_Key Value Coding - Fatal编程技术网

Ios 用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:]:此类

下面是我正在尝试做的:在nib文件中设计一个视图。使用Swift编写的类返回视图和nib所有者。在Swift中实例化nib的视图。导致崩溃的代码:

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。开放雷达链路: