我在研究之后看到这个特定的调试输出并不是非常罕见,但原因可能差别很大。我是iOS开发的新手,并且一直试图找出应用程序崩溃的原因,但无法破解它。我将提供许多不同的代码片段,因为我只是预感到实际上是什么错误。
我部分跟随this video tutorial for a ToDo list,但在某些方面有所不同。最值得注意的是,我选择不使用选项卡式应用程序模板,而是查找放松视图的方法。
以下是您创建教程的简单对象管理器类:
import UIKit
var rmndrMgr = ReminderManager()
struct reminder {
var name = "none"
var description = "none"
}
class ReminderManager: NSObject {
var reminders = [reminder]()
func addReminder(name: String, description: String) {
reminders.append(reminder(name: name, description: description))
}
}
以下是我的第一个视图控制器:
import UIKit
@objc(ToDoListTableViewController)
class ToDoListTableViewController: UITableViewController, UITableViewDelegate, UITableViewDataSource {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func unwindToList(segue:UIStoryboardSegue){
// var source = segue.sourceViewController
// as AddToDoItemViewController
// var item: ToDoItem? = source.toDoItem
// if item != nil {
// self.toDoItems.addObject(item)
// self.tableView.reloadData()
// }
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rmndrMgr.reminders.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Default")
cell.textLabel!.text = rmndrMgr.reminders[indexPath.row].name
cell.detailTextLabel!.text = rmndrMgr.reminders[indexPath.row].description
return cell
}
}
第二个视图控制器:
import UIKit
class AddToDoViewController: UIViewController {
@IBOutlet var textReminder: UITextField!
@IBOutlet var textDescription: UITextField!
//Events
@IBAction func addReminder_click(sender: UIButton) {
}
//Touch Functions
//UITextFieldDelegate
//"first responder" is the keyboard. resign it when user presses return key
//basically gets rid of the keyboard when user submit
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
self.view.endEditing(true)
println("clicked out")
}
}
这就是我的“添加”视图实际上是这样的: [已删除,因为我没有发布图片的声誉] imgur link instead
我在视图顶部有UIBarButtonItems的导航栏。现在,“关闭”和“完成”按钮(位于导航栏中)执行相同的操作:将用户展开回主列表。理想情况下,“提交”按钮(不在导航栏中,只在普通屏幕上)会将用户键入的内容添加到将在另一个视图中显示的数组中。 “完成”按钮可能会被删除或重构。
当前的行为是,当我单击“提交”按钮时,应用程序会与(lldb)的调试文本一起崩溃,无论它的动作函数内部是什么代码。我有理由相信它是正确连接的,因为我已经尝试写出函数签名和Control - 从按钮拖动到代码来生成它。
我认为问题在于导航栏,因为这些是从不同的ToDo列表教程中提取的。但是,我无法获得足够描述性的日志来真正了解原因或找出解决方法。如果需要,我很乐意从我的Xcode发布更多信息,所以请你问一下。如果有人能帮助我找出错误并从中吸取教训,我将非常感激。
答案 0 :(得分:4)
我打赌你在XCode编辑器中添加了一个断点。尝试点击“继续”进入“lldb”显示的控制台。如果是运行时错误,您会看到错误消息。
蓝色箭头是一个断点供参考。
答案 1 :(得分:1)
@objc(ToDoListTableViewController)
为什么会这样?您是否尝试使用CoreData? 右键单击按钮,查看链接的位置。