2010-03-25 2 views
2

Я использую PS для хранения данных в своем приложении. Я думаю, что у меня непонимание того, как работает PS. Если бы кто-нибудь мог сказать мне, как сделать так, чтобы счет, который я получаю из PS, был незашифрованным, а не зашифрованным счетом, в котором я заканчиваю? Примечание. Я изначально храню и незашифрованный счет!Вопрос о постоянном объекте/хранении BlackBerry

Из того, что я могу сказать, он считает, что оба счета, и оба объекта PO являются одними и теми же объектами! Когда я смотрю на их ячейки памяти в Eclispe, оба счета и оба PO-объекта имеют одинаковые ячейки памяти! Что мне не хватает?

Спасибо!

//create an unencrypted bill 
    BillDAO testBill = new BillDAO(); 

    //store it in PS 
    PersistentObject po = PersistentStore.getPersistentObject(4); 
    po.setContents(testBill); 
    po.forceCommit(); 

    //encrypt the bill 
    testBill.encrypt(); 

    //retrieve it from PS using a different PO 
    PersistentObject po2 = PersistentStore.getPersistentObject(4); 
    BillDAO retrievedBill = (BillDAO) po2.getContents(); 

    //and now for some reason my retrieved bill is encrypted! 
    //it should be unencrypted 

ответ

3

Два объекта (в PS и в ОЗУ) связаны между собой, поэтому изменения одного отражают друг друга. См. Ответ Майка Киркупа на вопрос this thread на форуме BB и в частности:

Вы должны когда-либо вызывать setContents() один раз. Это произойдет в первый раз, когда вы добавляете данные. Для каждого последующего вызова вы должны вызвать getContents(), а затем, изменяя этот объект напрямую. Изменяя объект напрямую, вы бы затем вызвать совершить в конце вашей работы, где система будет должным образом зафиксировать изменения ...

Кроме того, вы можете хотите оформить свои рекомендации для генерации ключей :)

Надеюсь, это поможет!

+0

Не могли бы вы представить пример кода, как изменить мой код? –

+0

Ну, если вы хотите сохранить не зашифрованный объект и зашифрованный объект RAM, я думаю, вам нужно клонировать объект (или создать два объекта). Я не знаю, что вы пытаетесь сделать, поэтому мне сложно дать образец ... – Tamar

+0

Понял. Благодарю. –

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