我有一个名为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的初学者。任何帮助表示赞赏。
答案 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中所述。