下面这段程式是练习用的,还没写完整,可是试跑的时候就出现上次说的
Thread 1:EXC_BAT_INSTRUCTION (code=EXC_I386_INVOP,subcode=0X0)
我检查了好几次,就是找不到问题,而且,我是照书上打的,见鬼了
import UIKit
class ViewController: UIViewController {
struct stu {
var id:Int32
var name:String
var chinese:Int32
var math:Int32
init(id:Int32, name:String, chinese:Int32, math:Int32) {
self.id = id
self.name = name
self.chinese = chinese
self.math = math
}
}
var arrStu:Array<stu> = []
var db:COpaquePointer = nil
var statement:COpaquePointer = nil
var sql:NSString = ""
var currentStu = 0
@IBOutlet weak var buttonWrite: UIButton!
@IBOutlet weak var tableViewSqlit: UITableView!
@IBOutlet weak var textChinese: UITextField!
@IBOutlet weak var textName: UITextField!
@IBOutlet weak var labelId: UILabel!
@IBOutlet weak var textMath: UITextField!
@IBOutlet weak var buttonInsert: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
buttonToggle(true, writeAble:false)
//第一次执行时将资料库复制到 Documents 资料夹
let fm:NSFileManager = NSFileManager()
db = nil
//以下是出现错误的行,下面这行下面这行
//以下是出现错误的行,下面这行下面这行
//以下是出现错误的行,下面这行下面这行
//以下是出现错误的行,下面这行下面这行
//以下是出现错误的行,下面这行下面这行
let src:String = NSBundle.mainBundle().pathForResource("student", ofType: "sqlite")!
let dst:String = NSHomeDirectory() + "/Documents/student.sqlite"
if !fm.fileExistsAtPath(dst) {
do {
try fm.copyItemAtPath(src, toPath: dst)
} catch _ {
}
}
if sqlite3_open(dst, &db) != SQLITE_OK {
alertMsg("ERROR",msgStr:"cant open the db")
exit(1)
}
sql = "SELECT * FROM class101"
statement = nil
if sqlite3_prepare_v2(db, sql.UTF8String, -1, &statement, nil) != SQLITE_OK {
alertMsg("ERROR",msgStr:"Error to read db")
exit(1)
}
while sqlite3_step(statement) == SQLITE_ROW {
var id = sqlite3_column_int(statement, 0)
var temName = sqlite3_column_text(statement, 1)
var name = String.fromCString(UnsafePointer<CChar>(temName))
var chinese = sqlite3_column_int(statement, 2)
var math = sqlite3_column_int(statement, 3)
var student:stu = stu(id:id,name:name!,chinese:chinese,math:math)
arrStu.append(student)
}
sqlite3_finalize(statement)
tableViewSqlit.reloadData()
showSingle(0)
}
func buttonToggle(insertAble:Bool, writeAble:Bool) ->Void {
buttonInsert.enabled = insertAble
buttonWrite.enabled = writeAble
}
func showSingle(n:Int){
labelId.text="\(arrStu[n].id)"
textName.text = String(arrStu[n].chinese)
textChinese.text = "\(arrStu[n].chinese)"
textMath.text = "\(arrStu[n].math)"
}
func alertMsg(titleStr:String,msgStr:String) -> Void {
var alertView:UIAlertView = UIAlertView(title: titleStr,message: msgStr,delegate: self, cancelButtonTitle:"确定")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
求各位神人帮小妹解
这样的莫名其妙的错误有可能是由于连线后又修改了变量名等,连线失效。这种情况可能导致这样的问题