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
どうすればこれを止めることができますか?
リストの最後に新しい変数を配置することで機能するようになりましたが、変数をタイプ別にグループ化したいと考えています。