- 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/
SELECT *, `o_cheque_request.member_id`, `o_cheque_request.wallet_id` FROM `o_cheque_request`, `o_mem
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要**SELECT count(*)**呢? 无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如
我试图找出一个文件是否存在,如果存在,验证css样式是否已经存在,如果不存在,将它们写在文件末尾... 我已经完成了这一切,但分 3 个步骤: 该文件是否存在? FileInfo fi= new Fi
我们正在开发即时消息传递应用程序,并且需要在用户的化身上用绿点显示用户 friend 的“状态”。 “状态”远远超出了“my_app_is_opened_and_on_focus”,这意味着(我猜可能
模式 Movie(title, year, director, budget, earnings) Actor(stagename, realname, birthyear) ActedIn(stag
我有一个正在尝试创建的 MySQL 触发器,但无法获得正确的语法。 触发器应该遍历一组关键字并将其与插入数据库的新帖子的标题进行匹配。如果找到匹配项,它应该将新帖子分配给该存储桶并更新存储桶的关键字集
我有 3 个表......用户、更新和碰撞。 我想向发出 api 请求的用户返回最新订单的 feed 更新,并提供显示 feed 中每个状态所需的所有数据。我还需要包括更新是否已被发出 api 请求的
我正在尝试呈现一个带有 UIView 的 UIViewController。 以下是我在 viewDidLoad 方法中尝试的代码。 //create the view controller UIVi
我正在努力弄清楚如何在不对 mysql 进行两次调用的情况下从一个表中检查两件事。 我有一个 Members 表。我想测试MemberID 列中是否存在某个值,以及PhoneNumber 列中是否存在
以下代码给出了一个没有 Do Compile 错误的循环: Loop Sheets("Snap").Rows(1).AutoFilter Field:=5, Criteria1:=List
是否可以通过检查“dig”的输出来检查域名的存在? 在绑定(bind)源中,我发现了这些常量: 0 DNS_R_NOEROR 1 DNS_R_FORMERR 2 DNS_R_SERVFAIL 3 DN
Controller 有问题 我在 Windows 上使用服务器,一切正常,但在互联网上我试图访问页面 social_apartament/beauty_life/并且找不到该页面,代码错误 404这
/** This is struct S. */ struct S(T) { static if(isFloatingPoint!T) { /// This version works
JVM 类型删除如何帮助 Clojure?没有它,Clojure 还能存在吗?如果 JVM 有具体化的类型会发生什么?也就是说,Clojure 将如何改变? 最佳答案 Clojure 根本不会有太大变
许多论文等提到对“system()”的调用是不安全且不可移植的。我不反对他们的论点。 不过,我注意到许多 Unix 实用程序都有一个等效的 C 库。如果没有,源可用于各种这些工具。 虽然许多论文和此类
在我的 Node js 应用程序中,我有一个用户登录 api。上面我在服务器端代码中创建了一个名为 customerid 的变量。现在,当用户身份验证成功时。我将他的 userid 值存储在我的 cu
我有一个工作资源管理器组,由 Ubuntu 14.04 虚拟机、网络接口(interface)、公共(public) IP 地址和存储帐户组成。我已经从这组资源中创建了一个模板。 当我尝试部署这组资源
我有一个函数createminor4(arr,锦标赛)它基本上将arr分成4组,每组8人,然后将它们一次交换到tourney 1组。从那里它插入四个{},其中有 4 个带有空数组的键。 我已经在 Ch
我有一个图表,其中有两个图例。我需要更改其中一个图例的点的大小。 我需要更改图例中“市场类型”的项目符号大小。我使用示例 here但不适用于我的图表。 我的代码如下: k <- ggplot(subs
我有 fiddle here展示我正在尝试做的事情。 我有一个动态生成的表,因此列可以按用户选择的任何顺序显示。因此,我尝试获取两个特定 header 的索引,以便可以将 CSS 类添加到这两列以供稍
我是一名优秀的程序员,十分优秀!