【问题标题】:Why is the app crashing when I try to append an array?为什么当我尝试追加数组时应用程序崩溃?
【发布时间】:2016-02-16 18:27:12
【问题描述】:

我正在从 parse 导入一个数组,我想将该数组添加到一个数组数组中,但是当应用程序尝试附加导入的数组时会崩溃。为什么会发生这种情况,我该如何解决?崩溃错误是Thread 1: EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP, subcode=0x0 我注释了附加行并且它没有崩溃,所以它必须是那一行。

 var animalarray: [[String]] = []    

 let query = PFQuery(className: "animals")

    query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in
        if error == nil{

                    for object in objects!{

                        if let animalss = object["CoordinateTest"]{
                            print("coord \(animalss)")
                            self.animalarray.append(animalss as! [String])//crashes here

                          }
                  }
             }
        }

【问题讨论】:

  • print("coord \(animalss)") 行的日志中显示了什么?
  • coord ( "dog", "cat")
  • 如果我不得不猜测,animalss 实际上并不是一个字符串数组,并且您的强制转换导致了崩溃。
  • 很好地解析它的字符串数组。
  • 一般来说你应该避免强制转换,我建议你将as? [String]添加到if行,并在else块中检查为什么它没有被正确地转换。这可能不是您问题的解决方案,但可能会帮助您缩小问题范围。

标签: ios arrays swift parse-platform


【解决方案1】:

您应该创建一个检索数据的方法,并使用查询来指定您想要的内容。您还应该创建一个临时变量来保存检索到的数据并将该变量附加到数组中。

例如)

var animalsArray:   [String] = []

func retrieveData(){
        let query = PFQuery(className: "animals")
        query.whereKey("Key", equalTo: object)
        query.orderByDescending("createdAt")
        query.findObjectsInBackgroundWithBlock {
            (object:[PFObject]?, error:NSError?) -> Void in

    if ( error != nil ){
        print(error?.localizedDescription, error?.userInfo)
    } else {

        for temp: PFObject in object! {
            let animals:    String       = temp["CoordinateTest"]         as! String

            self.animalsArray.append(animals!)
        }
      }  
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2022-12-29
    • 1970-01-01
    相关资源
    最近更新 更多