我正在制作一个创建活动的应用程序。 Event有一个属性用户可以成功保存,但现在我想将一组事件保存到当前用户。每次创建事件时,我都试图将该事件添加到数组中(对于用户类中的键“事件”)。
在swift中最好的方法是什么?这是我保存要解析的事件的示例代码。
第一个获取图像文件并将其传递给函数以保存整个事件......
@IBAction func saveEvent(sender: AnyObject) {
let pictureData = UIImagePNGRepresentation(eventImage.image)
let file = PFFile(name: "eventImage", data: pictureData)
file.saveInBackgroundWithBlock { (succeeded, error) -> Void in
if !(error != nil) {
self.saveEventToParse(file)
}
else if let error = error {
println("error: \(error.localizedDescription)")
}
}
}
此功能保存事件
func saveEventToParse(file: PFFile) {
let event = Event(image: file, user: PFUser.currentUser()!, comment: eventDescriptionField.text, title: eventTitleField.text, date: datePicker.date)
event.saveInBackgroundWithBlock { (success, error) -> Void in
if success {
//I KNOW I NEED TO DO SOMETHING HERE THAT'S NOT THIS
event.user.relationForKey("Events")
var alertView = UIAlertView(title: "Event saved!", message: "Success", delegate: nil, cancelButtonTitle: "Okay!")
alertView.show()
}
else {
println("error: \(error?.localizedDescription)")
}
}
}
谢谢!
答案 0 :(得分:1)
在您的情况下,我不确定一个事件的声明是否属于许多用户"是对还是错。但是,您可以继续使用如下关系:
let relation = event.user.relationForKey("Events")
relation.addObject(event)
event.user.saveInBackground()
您可以在此处参阅更多信息:https://parse.com/docs/ios/guide#relations-using-parse-relations
答案 1 :(得分:0)
我认为 - 在您的特定情况下 - 关系不是正确的选择。实际上,你真的不应该在User类上创建它,而是在Events类上创建一个指向User类的指针...它会快得多(你需要每当你想要的时候获取用户)
然后你会这样查询:
let query = PFQuery(className: "Events")
query.whereKey("userPointer", equalTo: PFUser.currentUser()!)
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
if(error == nil) {
print(objects)
}
}