- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家
第一次在这里发帖,但是什么都没有。我目前正在为我正在为学校开发的应用程序做出贡献。我最近添加的功能是该应用程序的计划功能。昨天,该应用程序能够创建、移动、存储和删除作业。今天,我的目标是添加编辑作业的功能。当我第一次尝试运行新代码时,它除了说我试图访问的数组中的索引不存在之外,还返回了 SIGBART 错误,尽管我几乎肯定它确实存在。这是完整的代码:
https://github.com/nicholaszana/SSA-Mobile-App-PlannerTab
但我很确定错误出在这个 ViewController 中:
//
// NewAssignmentViewController.swift
// PlannerTab
//
// Created by Nicholas Zana on 9/21/17.
// Copyright © 2017 Nicholas Zana. All rights reserved.
//
import UIKit
class NewAssignmentViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate, UITextViewDelegate {
@IBOutlet weak var assignmentTextField: UITextField!
@IBOutlet weak var notesTextView: UITextView!
@IBOutlet weak var classPicker: UIPickerView!
@IBOutlet weak var dueDatePicker: UIDatePicker!
var array:Array = [C1Name, C2Name, C3Name, C4Name, C5Name, C6Name]
var selectedClassName = C1Name
var dueDate:Date = Date()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.assignmentTextField.delegate = self
notesTextView.delegate = self
var namesArray:Array = UserDefaults.standard.array(forKey: "AssignmentNamesArray")!
var dueDateArray:Array = UserDefaults.standard.array(forKey: "AssignmentDueDateArray")!
var classArray:Array = UserDefaults.standard.array(forKey: "AssignmentClassArray")!
var notesArray:Array = UserDefaults.standard.array(forKey: "AssignmentNotesArray")!
notesTextView.text = notesArray[clickedCell] as! String
assignmentTextField.text = namesArray[clickedCell] as! String
dueDatePicker.date = dueDateArray[clickedCell] as! Date
classPicker.selectRow(1, inComponent: 1, animated: false)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//clickedCell defined in other view controller
@IBAction func didPressFinish(_ sender: Any) {
var namesArray:Array = UserDefaults.standard.array(forKey: "AssignmentNamesArray")!
namesArray[clickedCell - 1] = "\(assignmentTextField.text!)"
UserDefaults.standard.set(namesArray, forKey: "AssignmentNamesArray")
var dueDateArray:Array = UserDefaults.standard.array(forKey: "AssignmentDueDateArray")!
dueDateArray[clickedCell - 1] = dueDate
UserDefaults.standard.set(dueDateArray, forKey: "AssignmentDueDateArray")
var classArray:Array = UserDefaults.standard.array(forKey: "AssignmentClassArray")!
classArray[clickedCell - 1] = selectedClassName
UserDefaults.standard.set(classArray, forKey: "AssignmentClassArray")
var notesArray:Array = UserDefaults.standard.array(forKey: "AssignmentNotesArray")!
notesArray[clickedCell - 1] = notesTextView.text!
UserDefaults.standard.set(notesArray, forKey: "AssignmentNotesArray")
UserDefaults.standard.synchronize()
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return 6
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return array[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
selectedClassName = array[row]
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.view.endEditing(true)
return false
}
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if(text == "\n") {
textView.resignFirstResponder()
return false
}
return true
}
@IBAction func dueDateValueChanged(_ sender: Any) {
dueDatePicker.datePickerMode = UIDatePickerMode.date
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .long
let selectedDate = dueDatePicker.date
dueDate = selectedDate
}
}
是什么导致了这些错误?它们是不同的问题,还是同一个问题?
谢谢
/恩扎纳
编辑:这是 ViewController.swift:
//
// ViewController.swift
// PlannerTab
//
// Created by Nicholas Zana on 9/21/17.
// Copyright © 2017 Nicholas Zana. All rights reserved.
//
import UIKit
let C1Name = "History"
let C2Name = "Chemistry"
let C3Name = "Chinese 2A"
let C4Name = "Math II"
let C5Name = "Computer"
let C6Name = "Free"
var clickedCell:Int = 0
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate {
@IBOutlet weak var editButton: UIButton!
//Outlet for Table View
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//Checks if App has ever been run before.
if (UserDefaults.standard.bool(forKey: "HasLaunchedOnce")) {
// This code will be run only if the app has been run before.
} else {
//This code is only run on the very first app launch.
//UserDefaults are just permanately stored (even after app closed) variables. Google Them. They're really cool and easy to use.
//Stores "UserDefaults" to say that the App has launched before.
UserDefaults.standard.set(true, forKey: "HasLaunchedOnce")
//Updates UserDefaults
UserDefaults.standard.synchronize()
//Creates an Array in "UserDefaults" to store names of each task
UserDefaults.standard.set(["This is your digital planner!", "Add assignments with +", "Swipe left to complete"], forKey: "AssignmentNamesArray")
//Creates an Array in "UserDefaults" to store the due date of each task
UserDefaults.standard.set([Date(), Date(), Date()], forKey: "AssignmentDueDateArray")
//Creates an Array in "UserDefaults" to store the due Period of each task
UserDefaults.standard.set(["These are Notes. You can add additional information about an assignemnt here.","Notes","Notes"], forKey: "AssignmentNotesArray")
//Creates an Array in "UserDefaults" to store the class of each task
UserDefaults.standard.set([C1Name, C2Name, C3Name], forKey: "AssignmentClassArray")
}
}
@IBAction func didPressPlus(_ sender: Any) {
var namesArray = UserDefaults.standard.array(forKey: "AssignmentNamesArray")!
namesArray.append("Assignment Name")
UserDefaults.standard.set(namesArray, forKey: "AssignmentNamesArray")
var dueDateArray = UserDefaults.standard.array(forKey: "AssignmentDueDateArray")!
dueDateArray.append(Date())
UserDefaults.standard.set(dueDateArray, forKey: "AssignmentDueDateArray")
print(UserDefaults.standard.array(forKey: "AssignmentDueDateArray")!)
var classArray = UserDefaults.standard.array(forKey: "AssignmentClassArray")!
classArray.append(C1Name)
UserDefaults.standard.set(classArray, forKey: "AssignmentClassArray")
var notesArray = UserDefaults.standard.array(forKey: "AssignmentNotesArray")!
notesArray.append("Notes")
clickedCell = namesArray.count
}
//Tells how many cells need to be in the table view
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return UserDefaults.standard.array(forKey: "AssignmentNamesArray")!.count
}
//Adds ability to delete cells
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete {
var namesArray = UserDefaults.standard.array(forKey: "AssignmentNamesArray")!
namesArray.remove(at: indexPath.row)
UserDefaults.standard.set(namesArray, forKey: "AssignmentNamesArray")
var dueDateArray = UserDefaults.standard.array(forKey: "AssignmentDueDateArray")!
dueDateArray.remove(at: indexPath.row)
UserDefaults.standard.set(dueDateArray, forKey: "AssignmentDueDateArray")
print(UserDefaults.standard.array(forKey: "AssignmentDueDateArray")!)
var classArray = UserDefaults.standard.array(forKey: "AssignmentClassArray")!
classArray.remove(at: indexPath.row)
UserDefaults.standard.set(classArray, forKey: "AssignmentClassArray")
var notesArray = UserDefaults.standard.array(forKey: "AssignmentNotesArray")!
notesArray.remove(at: indexPath.row)
UserDefaults.standard.set(namesArray, forKey: "AssignmentNotesArray")
tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
}
}
//Creates Cells
@available(iOS 2.0, *)
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//Creates a cell as defined by prototype cell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! AssignmentTableViewCellViewController
//sets cell
//Names
let namesArray:Array = UserDefaults.standard.array(forKey: "AssignmentNamesArray")!
cell.assignmentNameLabel.text = namesArray[indexPath.row] as? String
//Due Date
func inputDateWeekdayAsString(Date:Date) -> String {
let inputDate = Date
let inputWeekday:Int = Calendar.current.component(.weekday, from: inputDate)
let weekdayArray:Array = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
if inputWeekday == nil {
return "Error!"
} else {
return weekdayArray[inputWeekday - 1]
}
}
let dueDateArray:Array = UserDefaults.standard.array(forKey: "AssignmentDueDateArray")!
DateFormatter().dateStyle = .long
DateFormatter().locale = Locale.init(identifier: "en_GB")
let inputDate:Date = dueDateArray[indexPath.row] as! Date
let inputDateForDisplay = DateFormatter().string(from: inputDate)
let inputWeekdayAsStringVar = inputDateWeekdayAsString(Date: inputDate)
let inputYear = Calendar.current.component(.year, from: inputDate)
let inputMonth = Calendar.current.component(.month, from: inputDate)
let inputDay = Calendar.current.component(.day, from: inputDate)
let todayYear = Calendar.current.component(.year, from: Date())
let todayMonth = Calendar.current.component(.month, from: Date())
let todayDay = Calendar.current.component(.day, from: Date())
var dueDateOutputString = "\(dueDateArray[indexPath.row])"
if inputYear != todayYear {
dueDateOutputString = "\(inputWeekdayAsStringVar), \(inputDateForDisplay)"
} else if inputMonth != todayMonth {
dueDateOutputString = "\(inputWeekdayAsStringVar), \(inputDateForDisplay)"
} else if (inputDay - todayDay < 7) && (inputDay - todayDay > 0) {
if inputDay - todayDay == 1 {
dueDateOutputString = "Tommorow"
} else {
dueDateOutputString = "Next \(inputWeekdayAsStringVar)"
}
} else if (inputDay - todayDay > -7) && (inputDay - todayDay < 0) {
if inputDay - todayDay == 1 {
dueDateOutputString = "Yesterday"
} else {
dueDateOutputString = "Last \(inputWeekdayAsStringVar)"
}
} else if inputDay == todayDay {
dueDateOutputString = "Today"
} else {
dueDateOutputString = "\(inputWeekdayAsStringVar), \(inputDateForDisplay)"
print(inputDateForDisplay)
}
cell.assignmentDueDateLabel.text = dueDateOutputString
//Class
let assignmentClassArray:Array = UserDefaults.standard.array(forKey: "AssignmentClassArray")!
cell.assignmentClassLabel.text = assignmentClassArray[indexPath.row] as? String
return (cell)
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
return 75;//Sets height of each Assignment Cell
}
//Allows dragging around cell order
func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
return true
}
//Tells app how to reorder arrays when table view is changed
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
//Names
var namesArray:Array = UserDefaults.standard.array(forKey: "AssignmentNamesArray")!
let namesItem = namesArray[sourceIndexPath.row]
namesArray.remove(at: sourceIndexPath.row)
namesArray.insert(namesItem, at: destinationIndexPath.row)
UserDefaults.standard.set(namesArray, forKey: "AssignmentNamesArray")
//DueDates
var dueDateArray:Array = UserDefaults.standard.array(forKey: "AssignmentDueDateArray")!
let dueDateItem = dueDateArray[sourceIndexPath.row]
dueDateArray.remove(at: sourceIndexPath.row)
dueDateArray.insert(dueDateItem, at: destinationIndexPath.row)
UserDefaults.standard.set(dueDateArray, forKey: "AssignmentDueDateArray")
//Class
var classArray:Array = UserDefaults.standard.array(forKey: "AssignmentClassArray")!
let classItem = classArray[sourceIndexPath.row]
classArray.remove(at: sourceIndexPath.row)
classArray.insert(classItem, at: destinationIndexPath.row)
UserDefaults.standard.set(classArray, forKey: "AssignmentClassArray")
//Notes
var notesArray:Array = UserDefaults.standard.array(forKey: "AssignmentNotesArray")!
let notesItem = namesArray[sourceIndexPath.row]
notesArray.remove(at: sourceIndexPath.row)
notesArray.insert(notesItem, at: destinationIndexPath.row)
UserDefaults.standard.set(notesArray, forKey: "AssignmentNotesArray")
//Synchronizes UserDefaults
UserDefaults.standard.synchronize()
}
@IBAction func didPressEditButton(_ sender: Any) {
//Enables dragging around items
tableView.isEditing = !tableView.isEditing
if tableView.isEditing == true {
editButton.setTitle("Done", for: .normal)
} else {
editButton.setTitle("Edit", for: .normal)
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
clickedCell = indexPath.row
}
}
根据“rt”的请求,这是在控制台中输入“bt”的结果。不过我不太确定这意味着什么。
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x000000010fd67d42 libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x000000010fd9f457 libsystem_pthread.dylib`pthread_kill + 90
frame #2: 0x000000010fa28107 libsystem_c.dylib`abort + 127
frame #3: 0x000000010f7ba91f libc++abi.dylib`abort_message + 245
frame #4: 0x000000010f7baabb libc++abi.dylib`default_terminate_handler() + 265
frame #5: 0x000000010ae6c1be libobjc.A.dylib`_objc_terminate() + 97
frame #6: 0x000000010f7d6159 libc++abi.dylib`std::__terminate(void (*)()) + 8
frame #7: 0x000000010f7d5e0a libc++abi.dylib`__cxa_rethrow + 99
frame #8: 0x000000010ae6c0dc libobjc.A.dylib`objc_exception_rethrow + 40
frame #9: 0x000000010b48fb09 CoreFoundation`CFRunLoopRunSpecific + 537
frame #10: 0x0000000110f829c6 GraphicsServices`GSEventRunModal + 62
frame #11: 0x000000010b983d30 UIKit`UIApplicationMain + 159
* frame #12: 0x000000010a53f7f7 PlannerTab`main at AppDelegate.swift:12
frame #13: 0x000000010f955d81 libdyld.dylib`start + 1
最佳答案
删除/评论此行修复了您的崩溃
classPicker.selectRow(1, inComponent: 1, 动画: false)
基本上您只有 1 个组件,因此适合您的正确行是
classPicker.selectRow(1, inComponent: 0, 动画: false)
关于ios - 应用程序给出 SIGBART 并声称打开特定 View 时数组索引不存在,然后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46411094/
我是 C 语言新手,我编写了这个 C 程序,让用户输入一年中的某一天,作为返回,程序将输出月份以及该月的哪一天。该程序运行良好,但我现在想简化该程序。我知道我需要一个循环,但我不知道如何去做。这是程序
我一直在努力找出我的代码有什么问题。这个想法是创建一个小的画图程序,并有红色、绿色、蓝色和清除按钮。我有我能想到的一切让它工作,但无法弄清楚代码有什么问题。程序打开,然后立即关闭。 import ja
我想安装screen,但是接下来我应该做什么? $ brew search screen imgur-screenshot screen
我有一个在服务器端工作的 UDP 套接字应用程序。为了测试服务器端,我编写了一个简单的 python 客户端程序,它发送消息“hello world how are you”。服务器随后应接收消息,将
我有一个 shell 脚本,它运行一个 Python 程序来预处理一些数据,然后运行一个 R 程序来执行一些长时间运行的任务。我正在学习使用 Docker 并且我一直在运行 FROM r-base:l
在 Linux 中。我有一个 c 程序,它读取一个 2048 字节的文本文件作为输入。我想从 Python 脚本启动 c 程序。我希望 Python 脚本将文本字符串作为参数传递给 c 程序,而不是将
对于一个类,我被要求编写一个 VHDL 程序,该程序接受两个整数输入 A 和 B,并用 A+B 替换 A,用 A-B 替换 B。我编写了以下程序和测试平台。它完成了实现和行为语法检查,但它不会模拟。尽
module Algorithm where import System.Random import Data.Maybe import Data.List type Atom = String ty
我想找到两个以上数字的最小公倍数 求给定N个数的最小公倍数的C++程序 最佳答案 int lcm(int a, int b) { return (a/gcd(a,b))*b; } 对于gcd,请查看
这个程序有错误。谁能解决这个问题? Error is :TempRecord already defines a member called 'this' with the same paramete
当我运行下面的程序时,我在 str1 和 str2 中得到了垃圾值。所以 #include #include #include using namespace std; int main() {
这是我的作业: 一对刚出生的兔子(一公一母)被放在田里。兔子在一个月大时可以交配,因此在第二个月的月底,每对兔子都会生出两对新兔子,然后死去。 注:在第0个月,有0对兔子。第 1 个月,有 1 对兔子
我编写了一个程序,通过对字母使用 switch 命令将十进制字符串转换为十六进制,但是如果我使用 char,该程序无法正常工作!没有 switch 我无法处理 9 以上的数字。我希望你能理解我,因为我
我是 C++ 新手(虽然我有一些 C 语言经验)和 MySQL,我正在尝试制作一个从 MySQL 读取数据库的程序,我一直在关注这个 tutorial但当我尝试“构建”解决方案时出现错误。 (我正在使
仍然是一个初学者,只是尝试使用 swift 中的一些基本函数。 有人能告诉我这段代码有什么问题吗? import UIKit var guessInt: Int var randomNum = arc
我正在用 C++11 编写一个函数,它采用 constant1 + constant2 形式的表达式并将它们折叠起来。 constant1 和 constant2 存储在 std::string 中,
我用 C++ 编写了这段代码,使用运算符重载对 2 个矩阵进行加法和乘法运算。当我执行代码时,它会在第 57 行和第 59 行产生错误,非法结构操作(两行都出现相同的错误)。请解释我的错误。提前致谢:
我是 C++ 的初学者,我想编写一个简单的程序来交换字符串中的两个字符。 例如;我们输入这个字符串:“EXAMPLE”,我们给它交换这两个字符:“E”和“A”,输出应该类似于“AXEMPLA”。 我在
我需要以下代码的帮助: 声明 3 个 double 类型变量,每个代表三角形的三个边中的一个。 提示用户为第一面输入一个值,然后 将用户的输入设置为您创建的代表三角形第一条边的变量。 将最后 2 个步
我是新来的,如果问题不好请见谅 任务:将给定矩阵旋转180度 输入: 1 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 输出: 16 15 14 13 12 11
我是一名优秀的程序员,十分优秀!