Моя основная проблема заключается в том, что я не получаю текст, который я вводил, чтобы войти в ярлык или таблицу, которую я сделал (небольшое отклонение, но хотел немного ее настроить). Я не получаю никаких ошибок, но может кто-то взглянуть на этот код и посмотреть, есть ли в нем серьезные ошибки, которые я могу игнорировать? Редактировать: Я продолжаю возвращаться и изменять мелкие вещи типа типа, но ничего не работает. Вот весь мой код, в случае, если это имеет смысл для всехПроблема с вводом текстового поля в таблицу
import UIKit
class ViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate {
var weatherList = [String]()
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var textLabel: UILabel!
@IBAction func searchButton(sender: AnyObject) {
weatherList.append(textField.text!)
textField.text = ""
NSUserDefaults.standardUserDefaults().setObject(weatherList, forKey: "weatherList")
}
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if NSUserDefaults.standardUserDefaults().objectForKey("weatherList") != nil {
weatherList = NSUserDefaults.standardUserDefaults().objectForKey("weatherList") as! [String]
}
self.textField.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return weatherList.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
cell.textLabel?.text = weatherList[indexPath.row] as String
return cell
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
weatherList.removeAtIndex(indexPath.row)
NSUserDefaults.standardUserDefaults().setObject(weatherList, forKey: "weatherList")
tableView.reloadData()
}
}
override func viewDidAppear(animated: Bool) {
tableView.reloadData()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
performAction()
return true
}
func performAction() {
weatherList.append(textField.text!)
textField.text = ""
NSUserDefaults.standardUserDefaults().setObject(weatherList, forKey: "weatherList")
}
}
Я установил, что, но теперь я получаю ошибку в моем AppDelegate на первой линии | класс AppDelegate: UIResponder, UIApplicationDelegate {| который говорит, что поток 1: сигнал SIGABRT – Fumbles
В вашем коде вы по-прежнему используете массив быстрого стиля. NSUserDefaults может принимать только перечисленные выше типы объектов. Вы также не можете делать так: weatherList = NSUserDefaults.standardUserDefaults(). ObjectForKey ("weatherList") как! [String] Если вы хотите использовать NSUserDefaults, вам нужно использовать NSArray. Вот еще один вопрос с той же проблемой и тот же ответ, который я дал: http://stackoverflow.com/questions/32798887/app-delegate-weird-error-when-trying-to-add-element-to-nsuserdefaults – beyowulf
Хорошо, если я изменю его на массив, что мне изменить _NSUserDefaults.standardUserDefaults(). SetObject (weatherList, forKey: "weatherList") _ и _weatherList = NSUserDefaults.standardUserDefaults(). ObjectForKey ("weatherList") _ to? – Fumbles