2015-02-17 3 views
0

У меня есть класс с именем Pet. Я собираю его в массиве. Затем я пытаюсь сохранить его, как показано ниже. Я также попробовал наследовать NSObject для класса Pet без необходимости. Невозможно ли сохранить собственный класс массивов в Parse или я делаю что-то действительно не так? Обратите внимание, что текущий пользователь существует и действителен.Сохранить мой собственный класс как массив в 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

Parse, скорее всего, пытается сериализовать массив «домашних животных» в JSON. Однако ваш класс «Pet» не является сериализуемым для JSON.

От NSJSONSerialization Class Reference:

Объект, который может быть преобразован в формат JSON должен обладать следующими свойствами :

  • Объект верхнего уровня является NSArray или NSDictionary.

  • Все объекты являются экземплярами NSString, NSNumber, NSArray, NSDictionary или NSNull.

  • Все словарные ключи являются экземплярами NSString.

  • Номера не NaN или бесконечность.

Вам нужно создать метод в вашем классе Pet, который преобразует его в словарь, как описано в this Stack Overflow answer.

+0

Хм. Мне нужно копать немного глубже. Например, Obj-C, я бы хотел, чтобы он был быстрым. Спасибо, хотя, мой поиск был пуст, теперь у меня есть с чем работать. – oyalhi

Смежные вопросы