Удалить объекты из Parse/Невозможно преобразовать в PFObject/NSArrayM

Моя проблема: я запрашиваю user["key"], который я пытаюсь присвоить новой переменной, как в документации.

Столбец в Parse представляет собой массив Strings, в моем запросе, если я println(user["key"]), он возвращает правильные объекты.

Однако, когда я это делаю:

let myVariable = user["key"] as String

or

let myVariable = user["key"] as! String

У меня ошибка:

Не удалось преобразовать значение типа _NSArrayM в NSString.

Моя конечная цель - получить объекты из Parse и отправить условие "если", а затем удалить результаты. Для этого мне нужно преобразовать объекты в PFObject, и именно здесь я борюсь.

Чтобы добавить, я могу только понизить до AnyObject! от let myVariable = user["key"]

и когда я пытаюсь удалить этот объект, у меня возникает ошибка

NSArrayM удалить: в экземпляр отправлен нераспознанный селектор.

Любая помощь будет принята с благодарностью.


person viktor    schedule 20.06.2015    source источник
comment
Сначала вы говорите, что столбец в Parse представляет собой массив строк, затем вы пытаетесь as String, какой сюрприз, что он не работает, возможно, вам следует использовать [String]   -  person luk2302    schedule 20.06.2015
comment
Действительно, большое спасибо. Я запутался, поскольку мои объекты в Parse сами были массивами. Я признаю, что ошибка была глупой. Еще раз спасибо за Ваш ответ.   -  person viktor    schedule 21.06.2015


Ответы (1)


Parse.com обычно возвращает массив, как вы можете видеть в своем сообщении об ошибке:

Не удалось преобразовать значение типа _NSArrayM в NSString.

__NSArrayM — это кодовое слово для изменяемого массива, поэтому вы пытаетесь преобразовать массив в строку.

Если вы уверены, что ваш запрос возвращает только один результат, вы можете получить только последний (и единственный) элемент в массиве и привести его к строке.

if let myVariable = user["key"].last as? String{
    println("myVariable key is \(myVariable)"
} else { 
    println("Could not retrieve key") 
}
person Icaro    schedule 20.06.2015
comment
Я думаю, у вас есть лишний ?. У меня не открыт Xcode... но разве это не должно быть просто user["key"].last as? String? - person nhgrif; 20.06.2015
comment
@nhgrif Вы правы, я думал, что, поскольку массив может быть пустым, он будет необязательным, но я тестирую в XCode, и компилятор просит меня удалить. Я уже исправил код выше. Спасибо - person Icaro; 20.06.2015
comment
Вы правы. Массив может быть пустым, и last может вернуть nil, но ? здесь все равно не нужен. - person nhgrif; 20.06.2015
comment
@viktor Я рад, что помог вам, пожалуйста, не забудьте отметить проблему как решенную, если она исправлена ​​сейчас, и удачи с вашим приложением! - person Icaro; 22.06.2015
comment
@Icaro, все решено и отлично. Помимо этой небольшой ошибки, у меня фактически был идентичный столбец в Parse, который постоянно добавлялся с объектами, когда я пытался их изменить. Поэтому мне пришлось остановить добавление объектов перед применением модификации. И, перепробовав значительное количество решений, не определив точного источника моей проблемы, я потерялся в приведении своих объектов и так далее. Я должен был сделать хороший шаг назад от проекта, немного поспать и сыграть в теннис, а затем со свежими мыслями. Но огромное спасибо за помощь и за пожелания. - person viktor; 22.06.2015
comment
@viktor Иногда нам нужен перерыв. Можете ли вы поставить галочку в зеленом поле рядом с вопросом, чтобы он был помечен как решенный, иначе другие люди тоже могут попытаться ответить на него! - person Icaro; 23.06.2015