Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.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 类没有初始值设定项_Ios_Uitableview_Swift - Fatal编程技术网

Ios 类没有初始值设定项

Ios 类没有初始值设定项,ios,uitableview,swift,Ios,Uitableview,Swift,我对斯威夫特班有意见。我有一个UITableViewController类和UITableViewCell类的swift文件。我的问题是UITableViewCell类和插座。这个类有一个错误,类“HomeCell”没有初始值设定项,我不理解这个问题 谢谢你的回复 import Foundation import UIKit class HomeTable: UITableViewController, UITableViewDataSource, UITableViewDelegate {

我对斯威夫特班有意见。我有一个UITableViewController类和UITableViewCell类的swift文件。我的问题是UITableViewCell类和插座。这个类有一个错误,类“HomeCell”没有初始值设定项,我不理解这个问题

谢谢你的回复

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?
vs
var 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
是另一回事。嘿,亲爱的,谁在对不可变的对象说话?