解析Swift中的关系

时间:2015-09-29 23:42:17

标签: ios swift parse-platform relationship

我正在制作一个创建活动的应用程序。 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)")
        }

    }
}

谢谢!

2 个答案:

答案 0 :(得分:1)

在Parse中,关系通常用于"多对多"关系。

在您的情况下,我不确定一个事件的声明是否属于许多用户"是对还是错。但是,您可以继续使用如下关系:

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)
            }
        }