在Parse中将我自己的类保存为数组

时间:2015-02-17 19:27:59

标签: arrays swift parse-platform save

我有一个名为Pet的班级。我在一个数组中收集它。然后我尝试像下面的代码一样保存它。我也尝试将NSObject继承到Pet类,没有用。是不是可以在Parse中保存我自己的数组类,或者我做错了什么?请注意,当前用户存在且有效。

代码定义的某处:

var pets : [Pet] = [Pet]()

填充:

pets.append(newPet)

并试图保存:

@IBAction func saveTapped(sender: UIBarButtonItem) {
    PFUser.currentUser().setObject(pets, forKey: "pets")

    user.saveInBackgroundWithBlock({ (success, error) -> Void in
        if error == nil {
            DLog("Suceess saving")
        } else {
            displayAlertWithTitle(self, nil, error.description)
            DLog(error)
        }
    })
}

我得到的错误是:

2015-02-17 18:28:59.906 Patikoy[38292:2121589] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (Patikoy.Pet)'

P.S。我是Swift和Parse的初学者。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

Parse可能试图将“pets”数组序列化为JSON。但是,您的“Pet”类不能序列化为JSON。

来自NSJSONSerialization Class Reference

  

可以转换为JSON的对象必须具有以下内容   属性:

     
      
  • 顶级对象是NSArray或NSDictionary。

  •   
  • 所有对象都是NSString,NSNumber,NSArray,NSDictionary或NSNull的实例。

  •   
  • 所有字典键都是NSString的实例。

  •   
  • 数字不是NaN或无穷大。

  •   

您需要在Pet类上创建一个方法,将其转换为Dictionary,如this Stack Overflow answer中所述。