【发布时间】:2013-04-01 09:18:30
【问题描述】:
在 Pharo Smalltalk 中,我使用 ReferenceStream 来序列化对象列表——这是我正在序列化的对象的类定义:
Object subclass: #Task
instanceVariableNames: 'title notes list project dateNextAction dateCreated dateCompleted importance selected'
classVariableNames: 'Database'
poolDictionaries: ''
category: 'ToDo'
我正在使用此处描述的SMFileDatabase 方法:
http://book.seaside.st/book/advanced/persistency/image-based-persistency
这一直运作良好,我的原型应用不必使用数据库真是太好了。
但是,问题出在:当我将新的实例变量 person 添加到 Task 时,来自 ReferenceStream 的负载会中断:
Object subclass: #Task
instanceVariableNames: 'title notes list project person dateNextAction dateCreated dateCompleted importance selected'
classVariableNames: 'Database'
poolDictionaries: ''
category: 'ToDo'
它似乎没有发现新变量,并将值加载到错误的插槽中,所以人取了dateNextAction 的值,dateNextAction 取了dateCreated 等等。
我怎样才能阻止这种情况发生?
我已经通过将新变量放在列表末尾来实现它,但我想按类型对变量进行分组。
【问题讨论】: