首页 文章

exc_bad_instruction(code = exc_i386_invop subcode = 0x0)swift 2.0

提问于
浏览
-1

我在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!
 }

2 回答

  • 2

    StructService 中的数组 pdtitle 未初始化,因此不存在 .

    将您的代码更改为

    class StructService {
         var pdtitle:[String] = []
         var mainTitle:String!
         var expanded: Bool!
     }
    
  • 0

    pdtitle 已声明但未初始化 . 所以它是 nil 并且代码崩溃了 .

    将类属性声明为隐式展开选项作为不写入或使用初始化程序的不在场证明,这总是一个非常糟糕的习惯 .

    如果属性应该是可选的,则将其声明为常规可选 .

    在此示例中,数组初始化为空,字符串是可选的,Bool声明为默认值 .

    class StructService
    {
       var pdtitle = [String]()
       var mainTitle : String?
       var expanded = false
    }
    

相关问题