2015-05-05 6 views
0

Я пытаюсь реализовать код найти здесь: http://developer.couchbase.com/mobile/develop/guides/couchbase-lite/native-api/document/index.html#updating, в методе .update, в следующем коде:Невозможно присвоить результат этого выражения при назначении значений в NSDictionary

document = database.documentWithID(u.id) 
document.update({ (newRev) -> Bool in 

    newRev["a"] = "A" 

    return true 
}, error: &error) 

Но Свифт не позволяя мне добавить значение в переменную newRev, сообщая мне, что я не могу назначить результат выражения.

Может ли кто-нибудь помочь мне с обходным путем для этой ошибки?

Спасибо

+0

'newRev', вероятно, неизменный словарь, поэтому вы не можете его назначать. – AdamPro13

+0

Вы используете 'NSDictionary', который является неизменным. Вам нужно использовать 'NSMutableDictionary'. – ABakerSmith

+0

Спасибо, что заставило меня заглянуть внутрь рамки, и я узнал, что 'NSMutableDictionary' является' newRev.properties' –

ответ

0

С помощью я нашел решение сам, ошибка в руководстве в том, что они, добавляя обновленные значения к значению newRev, в то время как она должна быть добавлена ​​к его newRev.properties вар.

Итак, я создал новую переменную NSDictionary и добавил ее к существующему.

var properties = [NSObject: AnyObject]() 
properties[PROPERTY_DOCUMENT_TYPE] = String(DOCUMENT_TYPE_USERS) 

document.update({ (newRev) -> Bool in 

    newRev.properties.addEntriesFromDictionary(properties) 

     return true 

}, error: &error) 
Смежные вопросы