2015-01-14 4 views
0

У меня есть следующий классКак обновить экземпляр подкласса Parse.com PFOject?

class Message : PFObject, PFSubclassing { 
var messageTitle : NSString 
... 
} 

Класс Message является подклассом класса Parse.com PFObject.

Я держу массив сообщений

var messages = [Message]() 

Когда я хочу изменить один:

var message = messages[index] 
message. messageTitle = "Foo" 
message.saveInBackgroundWithBlock({ (success: Bool!, error: NSError!) -> Void in 
... 
}) 

Я не уверен, если правильный путь, чтобы сделать запрос, или если я могу использовать объекты из массива для сохранения сообщений? Я получаю дубликаты записей, потому что objectId либо будет, либо отличается от оригинальной записи.

Или, может быть, я должен хранить переменную local objectId?

ответ

0

objectId автоматически обновляется успешно сохранить, но, конечно, это изменение видно из обратного вызова, а не в строке после saveInBackgroundWithBlock - так, например:

var message = messages[index] 
message. messageTitle = "Foo" 
message.saveInBackgroundWithBlock({ (success: Bool!, error: NSError!) -> Void in 
    println(message.objectId) 
}) 

напечатает фактический идентификатор, назначенный после спасти.

+0

Но сообщение (извлеченное из сообщений [index]) было сохранено таким образом, а затем добавлено в массив сообщений. Массив сообщений содержит объекты сообщений, которые являются PFObjects. Не могу ли я обновить значения сообщения, а затем вызвать saveinbackground для обновления значений этого сообщения? – grabury

+0

Не уверен, что я понял, что вы имеете в виду - 'messages' - это массив экземпляров' Message' (ссылок на). Если вы читаете элемент массива и назначаете переменную, вы фактически присваиваете ссылку, поэтому любое изменение, которое вы делаете в экземпляр, указанный переменной, отражается в соответствующем элементе массива. Вам не нужно добавлять его снова в массив, если это то, что вы имеете в виду. – Antonio

+0

Нет, это не то, что я имею в виду. У меня есть PFObject, хранящиеся в массиве. Я предположил, что могу использовать этот объект и просто вызывать сохранение после настроек своих переменных и обновлять базу данных (на данный момент она дублирует запись) – grabury

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