Klasse hat keine Initialisierungen: Swift-Fehler
Ich habe ein problem mit meiner ViewController.
Mein code hat ein Fehler über Initialisierungen, und ich kann nicht verstehen, warum.
Bitte, einen moment Zeit nehmen, zu schauen, mein code:
import UIKit
class ViewController: UIViewController, UITableViewDataSource {
let sectionsTableIdentifier = "SectionsTableIdentifier"
var names: [String: [String]]!
var keys: [String]!
@IBOutlet weak var tableView: UITableView!
var searchController: UISearchController
//methods
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: sectionsTableIdentifier)
let path = NSBundle.mainBundle().pathForResource("sortednames", ofType: "plist")
let namesDict = NSDictionary(contentsOfFile: path!)
names = namesDict as! [String: [String]]
keys = namesDict!.allKeys as! [String]
keys = keys.sort()
let resultsController = SearchResultsController()
resultsController.names = names
resultsController.keys = keys
searchController = UISearchController(searchResultsController: resultsController)
let searchBar = searchController.searchBar
searchBar.scopeButtonTitles = ["All", "Short", "Long"]
searchBar.placeholder = "Enter a search term"
searchBar.sizeToFit()
tableView.tableHeaderView = searchBar
searchController.searchResultsUpdater = resultsController
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return keys.count
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let key = keys[section]
let nameSection = names[key]!
return nameSection.count
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return keys[section]
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(sectionsTableIdentifier, forIndexPath: indexPath) as UITableViewCell
let key = keys[indexPath.section]
let nameSection = names[key]!
cell.textLabel!.text = nameSection[indexPath.row]
return cell
}
func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? {
return keys
}
}
Was ist das problem?
Der Fehler ist, dass die Klasse keine Initialisierung. Ich habe keine Variablen ohne Wert.
InformationsquelleAutor der Frage iGermanos | 2015-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problematische Zeile ist
Ändern
oder wenn Sie nicht initialisieren Sie Sie in der Ansicht Leben-Zyklen, optional " verwenden, um crashes zu vermeiden:
InformationsquelleAutor der Antwort Sahil Kapoor
Ihre Linie, die den Fehler abzufangen ist:
var searchController: UISearchController
weil Sie nie init searchController in einem Lebenszyklus init-Funktion von Ihrer UIViewController. Ich rate Ihnen nicht zu zwingen, packen der var (wie Sahil oben gesagt), aber richtig init-in init-Funktion wie diese:
In Swift, die Sie immer vermeiden sollten, Kraft unwrap-Objekt wie oben beschrieben, zu vermeiden Absturz in Ihrer app, oder verwenden Sie, wenn-Lassen/Guard-Let Vorlage
Prost aus Frankreich
InformationsquelleAutor der Antwort jlngdt