Kee*_*nle 1 key-value-coding nib ios swift
这是我想要做的:在nib文件中设计一个视图.使用Swift编写的类返回视图和nib所有者.在Swift中实例化nib的视图.崩溃的代码:
var myViewOwner: MyViewOwner?
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil) // crash
Run Code Online (Sandbox Code Playgroud)
......有错误:
[NSObject 0x7bfa0cc0 setValue:forUndefinedKey:]:此类与密钥myView不符合密钥值编码.
所以,我有:带有空白视图的nib文件,其中视图是类型的类型MyClass和nib所有者MyViewOwner.这两个类都是用Swift编写的.
我将只发布MyViewOwner类代码,因为MyView.swift只是一个类定义.
MyViewOwner.swift
class MyViewOwner {
@IBOutlet weak var myView: MyView
}
Run Code Online (Sandbox Code Playgroud)
上面引起的错误.
当然Swift对象不符合KVO,所以我试过:
class MyViewOwner: NSObject {
@IBOutlet var myView: MyView
}
Run Code Online (Sandbox Code Playgroud)
......和:
class MyViewOwner: NSObject {
@IBOutlet strong var myView: MyView = MyView() // we need to set something since it's 'strong'
}
Run Code Online (Sandbox Code Playgroud)
两者都导致错误.
@objc class MyViewOwner: NSObject {
@objc @IBOutlet strong var myView: MyView = MyView()
}
Run Code Online (Sandbox Code Playgroud)
没有帮助,同样的错误.
我做错了什么?我应该以什么方式编写swift中的所有代码才能使其工作?
更新: xCode中的所有者和视图设置

更新:所有者查看连接

这段代码,如果真的是你的代码,没有任何意义:
var myViewOwner: MyViewOwner?
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil)
Run Code Online (Sandbox Code Playgroud)
变量myViewOwner在第一行是未初始化的; 那里没有任何对象.因此,对象不能像owner:任何东西那样起作用,正如你要求它在第二行中所做的那样.
也许你的意思是:
let myViewOwner = MyViewOwner() // or whatever the initializer is
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil)
Run Code Online (Sandbox Code Playgroud)