我在swift 2中得到了这个错误:
exc_bad_instruction(code = exc_i386_invop subcode = 0x0)
我的代码:
var learn = StructService()
override func viewDidLoad(){
super.viewDidLoad()
let sliderRecords = db.executeQuery ( "SELECT * FROM tablepagedesgin WHERE pdcc LIKE '%services%' ")
for record in sliderRecords
{
if record.column["pdcc"]?.asString() == "services2"
{
let tmp = (record.column["pdtitle"]!.asString())!
learn.pdtitle.append(tmp) //exc_bad_instruction (code=exc_i386_invop subcode=0x0)
}
}}
在我的课堂上:
class StructService
{
var pdtitle:[String]!
var mainTitle:String!
var expanded: Bool!
}
pdtitle
已申报但尚未初始化。所以这是nil
和代码崩溃。
将类属性声明为隐式展开选项作为不写入或使用初始化程序的不在场证明,这总是一个非常糟糕的习惯。
如果属性应该是可选的,则将其声明为常规可选。
在此示例中,数组初始化为空,字符串是可选的,Bool声明为默认值。
class StructService
{
var pdtitle = [String]()
var mainTitle : String?
var expanded = false
}
您在pdtitle
中的数组StructService
未初始化,因此它不存在。
将您的代码更改为
class StructService {
var pdtitle:[String] = []
var mainTitle:String!
var expanded: Bool!
}