Klasse hat keine Initialisierer Swift
Ich habe ein problem mit Swift Klasse. Ich habe einen swift-Datei für die Klasse UITableViewController und UITableViewCell Klasse. Mein problem ist die UITableViewCell Klasse, und outlets. Diese Klasse hat einen Fehler Klasse "HomeCell" hat keine Initialisierungenund ich don ' T verstehen dieses problem.
Dank für Eure Antworten.
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)
}
}
InformationsquelleAutor der Frage Kevin Py | 2015-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie implizit unwrapped optionals, so dass Swift bewältigen können zirkuläre Abhängigkeiten (parent <-> Kind von UI-Komponenten in diesem Fall) während der Initialisierungsphase.
Lesen Sie diese docSie erklären alles sehr schön.
InformationsquelleAutor der Antwort mprivat
Schnelle Lösung - stellen Sie sicher, dass alle Variablen, die nicht bekommen, initialisiert, wenn Sie erstellt werden (z.B.
var num : Int?
vsvar num = 5
) haben entweder ein?
oder!
.Lange Antwort (empfohlen) - Lesen Sie die doc als pro mprivat schlägt...
InformationsquelleAutor der Antwort Byron Coetsee
Dies ist von Apple doc
Erhalten Sie die Fehlermeldung Klasse "HomeCell" hat keine Initialisierungenweil Ihre Variablen in einem unbestimmten Zustand. Entweder Sie erstellen Initialisierungen oder Sie machen optional-Typen verwenden ! oder ?
InformationsquelleAutor der Antwort CodeHelp
Einfache Antwort:
Meine Antwort behebt die Fehler allgemein und nicht den genauen code von der OP. Keine Antwort erwähnt das dieser Hinweis so, ich dachte nur, ich füge es hinzu.
Den code unten würde auch das generieren des gleichen Fehler:
Andere erwähnt, dass Entweder Sie erstellen Initialisierungen oder Sie machen optional-Typen verwenden ! oder ? ist das so richtig. Allerdings, wenn Sie eine optionale Mitglied/Eigenschaft, das optional sein sollte, veränderlich ie
var
. Wenn Sie einelet
dann wäre es nie in der Lage sein, um aus seinernil
Zustand. Das ist schlecht!Also die richtige Schreibweise ist:
Option1:
Oder Sie schreiben es so:
Option2:
oder default, um einen beliebigen Wert (einschließlich
nil
die irgendwie dumm)Option3:
Tief Antwort:
Meine Antwort behebt die Fehler allgemein und nicht den genauen code von der OP. Keine Antwort erwähnt das dieser Hinweis so, ich dachte nur, ich füge es hinzu.
Den code unten würde auch das generieren des gleichen Fehler:
Andere erwähnt, dass Entweder Sie erstellen Initialisierungen oder Sie machen optional-Typen verwenden ! oder ? ist das so richtig. Allerdings, wenn Sie eine optionale Mitglied/Eigenschaft, das optional sein sollte, veränderlich ie
var
. Wenn Sie einelet
dann wäre es nie in der Lage sein, um aus seinernil
Zustand. Das ist schlecht!Also die richtige Schreibweise ist:
Option1
Oder Sie schreiben es so:
Option2
oder default, um einen beliebigen Wert (einschließlich
nil
die irgendwie dumm)Option3
Wenn Sie neugierig sind, warum
let
(im Gegensatz zuvar
) nicht initialisiertnil
dann Lesen hier und hierInformationsquelleAutor der Antwort Honey
In meinem Fall habe ich erklärt
Bool
wie diese:also erklärte ich es ohne auszupacken, so ist Dies, wie ich das gelöst (keine Initialisierer) Fehler :
InformationsquelleAutor der Antwort Anurag Sharma
Nicht um eine spezifische Antwort auf deine Frage, aber ich bekam diese Fehlermeldung, wenn ich nicht einen ersten Wert für eine enum-während er erklärt es als eine Eigenschaft. Ich beauftragte einen anfänglichen Wert der enum um diesen Fehler zu beheben.
Hier veröffentlichen, wie es vielleicht jemand helfen.
InformationsquelleAutor der Antwort Sonu VR
geben Sie einfach die init-block für HomeCell Klasse
ist es in meinem Fall
InformationsquelleAutor der Antwort anoopbryan2