Вот мой код:быстро - получить ObjectId поля вызывает фатальную ошибку
@IBAction func saveSettings(sender: AnyObject) {
var settings:PFObject = PFObject(className: "Settings")
settings["routes"] = routesSetting as String
settings["sortBy"] = sortBySetting as String
settings["user"] = PFUser.currentUser()
settings.saveInBackgroundWithBlock{(success:Bool!, error:NSError!) ->Void in
if success != nil {
NSLog("%@","OK-settings data saved")
NSLog("%@",self.routesSetting as String)
}
else
{
NSLog("%@",error)
}
}
}
@IBAction func updateSettings(sender: AnyObject) {
var settings:PFObject = PFObject(className:"Settings")
var id = settings["objectId"] as String
var query = PFQuery(className:"Settings")
println(settings)
println(id)
println(query)
query.getObjectInBackgroundWithId(id) {
(settings: PFObject!, error: NSError!) -> Void in
if error != nil {
NSLog("%@", error)
} else {
settings["routes"] = self.routesSetting as String
settings["sortBy"] = self.sortBySetting as String
settings.save()
}
}
Я могу запустить код saveSettings без каких-либо проблем. Я установил его для запуска, когда новый пользователь подписывается с приложением. Я проверил, что новая строка вставляется в таблицу параметров в облачной базе данных Parse. Но теперь я хотел бы просто ОБНОВИТЬ одну строку вместо создания новой строки каждый раз, когда есть сохранение. Поэтому я работал над функцией updateSettings. Я следил за документацией Parse для обновления объектов (https://parse.com/docs/ios_guide#objects-updating/iOS). При нажатии на кнопку Update, чтобы запустить функцию, я получаю:
фатальная ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение (lldb)
Линия она указывает на это:
var id = settings["objectId"] as String
Я полный новичок в парсе.
Некоторые недавние дополнительная информация:
Результаты Println заявления:
<Settings: 0x7fd423805260,
objectId: new, localId: (null)> {
}
nil
<PFQuery: 0x7fd4217191f0>
Так часть проблемы это не извлекая ObjectId?
Если 'настройки [«ObjectId»]' равна нулю, вы не можете бросить он набирает String. Вы могли бы наложить его на тип 'String? ', Написав' var id = settings ["objectId"] как? String'. При работе с библиотеками Objective-C в Swift вы часто получаете значения nil, поэтому вы должны хранить их в переменных с нулевым значением. – Phssthpok
Я попробую. Но я вижу строку в таблице с objectId - почему она будет равна нулю? – lostinthebits
Это по-прежнему приводит к ошибке со смертельным исходом. Может быть, мой запрос неверен? Я следую учебнику. – lostinthebits