2015-09-29 2 views
0

Я в процессе создания приложения, которое создает события. Событие имеет свойство пользователя, которое успешно сохраняет, но теперь я хочу сохранить массив событий для текущего пользователя. Каждый раз, когда создается событие, я пытаюсь добавить это событие в массив (для ключа «События» в классе пользователя).Разбор отношений в 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)") 
     } 

    } 
} 

спасибо!

ответ

1

в Parse, соотношение обычно используется для отношений «многие ко многим».

В вашем случае я не уверен, что утверждение, которое является «одним событием, может принадлежать многим пользователям», является правильным или неправильным. Тем не менее, вы можете продолжить, используя соотношение, как это:

let relation = event.user.relationForKey("Events") 
relation.addObject(event) 
event.user.saveInBackground() 

Более подробную информацию вы можете обратиться сюда: https://parse.com/docs/ios/guide#relations-using-parse-relations

+0

одно событие может принадлежать многим пользователям, если они atendees, но только один может принадлежать пользователю, который его создал. Наверное, мне нужны два разных ключа или свойства. Спасибо, я дам вам попробовать – Echizzle

0

Я думаю - в вашем конкретном случае - это отношения не являются правильным выбором. Фактически, вы действительно не должны создавать это в классе User, но вместо этого вместо указателя на класс User в классе Events ... он будет намного быстрее (вам нужно будет каждый раз получать пользователя каждый раз, когда вы этого хотели) ,

Вы бы тогда запрос так:

 let query = PFQuery(className: "Events") 
     query.whereKey("userPointer", equalTo: PFUser.currentUser()!) 
     query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 
      if(error == nil) { 
       print(objects) 
      } 
     } 
Смежные вопросы