Ios 类没有初始值设定项
我对斯威夫特班有意见。我有一个UITableViewController类和UITableViewCell类的swift文件。我的问题是UITableViewCell类和插座。这个类有一个错误,类“HomeCell”没有初始值设定项,我不理解这个问题 谢谢你的回复Ios 类没有初始值设定项,ios,uitableview,swift,Ios,Uitableview,Swift,我对斯威夫特班有意见。我有一个UITableViewController类和UITableViewCell类的swift文件。我的问题是UITableViewCell类和插座。这个类有一个错误,类“HomeCell”没有初始值设定项,我不理解这个问题 谢谢你的回复 import Foundation import UIKit class HomeTable: UITableViewController, UITableViewDataSource, UITableViewDelegate {
import Foundation
import UIKit
class HomeTable: UITableViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var tableViex: UITableView!
var items: [(String, String, String)] = [
("Test", "123", "1.jpeg"),
("Test2", "236", "2.jpeg"),
("Test3", "678", "3.jpeg")
]
override func viewDidLoad() {
super.viewDidLoad()
var nib = UINib(nibName: "HomeCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "bookCell")
}
// Number row
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count
}
// Style Cell
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("bookCell") as UITableViewCell
// Style here
return cell
}
// Select row
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Select
}
}
// PROBLEM HERE
class HomeCell : UITableViewCell {
@IBOutlet var imgBook: UIImageView
@IBOutlet var titleBook: UILabel
@IBOutlet var pageBook: UILabel
func loadItem(#title: String, page: String, image:String) {
titleBook.text = title
pageBook.text = page
imgBook.image = UIImage(named: image)
}
}
您必须使用隐式展开选项,以便Swift能够在初始化阶段处理循环依赖项(在本例中为UI组件的父子项)
@IBOutlet var imgBook: UIImageView!
@IBOutlet var titleBook: UILabel!
@IBOutlet var pageBook: UILabel!
阅读本文,他们会很好地解释它。快速修复-确保所有在创建时未初始化的变量(例如
var num:Int?
vsvar num=5
)都有?
或代码>
长答案(建议)-按照mprivat的建议阅读…这是来自苹果的
在创建类或结构的实例时,类和结构必须将其所有存储的属性设置为适当的初始值。存储的属性不能处于不确定状态
您会收到错误消息类“HomeCell”没有初始值设定项,因为您的变量处于不确定状态。要么创建初始值设定项,要么使用!或者?我的回答是一般性的错误,而不是OP的确切代码。没有回答提到这个注释,所以我只是想添加它
下面的代码也会产生相同的错误:
class Actor {
let agent : String? // BAD! // Its value is set to nil, and will always be nil and that's stupid so Xcode is saying not-accepted.
// Technically speaking you have a way around itNot a specific answer to your question but I had got this error when I hadn't set an initial value for an enum while declaring it as a property. I assigned a initial value to the enum to resolve this error.
Posting here as it might help someone.In my case I have declared a Bool
like this:
var isActivityOpen: Bool
类参与者{
让代理:String?//BAD!//它的值被设置为nil,并且总是为nil,这很愚蠢,所以Xcode说不接受。
//从技术上讲,你有办法解决这个问题对你的问题没有一个具体的答案,但是当我将枚举声明为属性时没有为它设置初始值时,我遇到了这个错误。我为枚举指定了一个初始值来解决这个错误。
在这里发布,因为它可能会帮助某人。在我的情况下,我声明了一个Bool
如下:
var isActivityOpen: Bool!
i、 e.我声明它没有展开,因此,这就是我如何解决(没有初始值设定项)错误的方法:
只需为HomeCell类提供init块即可
在我的例子中,这是有效的您是否需要将nib变量的类型显式地声明为可选的UINib?您的解释和该文档对我来说都是有意义的,但错误消息却没有!这可能是AppleAlso的一个问题@IBOutlets应该标记为弱,以避免保留循环。@Dennis Pashkov据我所知,这只适用于IBOu在viewController的视图层次结构中的TLET。否则它将立即释放,因为没有人持有它。我在使用var myBool:Bool
定义Bool时遇到了这个问题。要解决此错误,您需要为?变量设置默认值,例如:let showUserPointViewDelegate:ShowUserPointsViewControllerControl=nil+1?
意味着它可能是nil,但如果是,那么前进和什么都不做就没有问题。!
意味着如果在解包后它是nil,那么崩溃这两个都满足启动要求-通过通知编译器:我知道/希望它将从nil开始。搜索var
和let
在您查看控制器时,查找缺少的!
和?
感谢您添加它,因为它是图片中的一个关键部分。解释得很好!!设置为nil并不愚蠢,但与有多少模型工作有关。@drew..将某个不可变项设置为nil
是非常错误的。将var
设置为nil
是另一回事。嘿,亲爱的,谁在对不可变的对象说话?