4

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

これはうまく機能しており、プロトタイプ アプリにデータベースを使用する必要がなくなったのは良かったです。

ただし、ここに問題があります。新しいインスタンス変数personTaskReferenceStream からのロードに追加すると、次のように壊れます。

Object subclass: #Task
instanceVariableNames: 'title notes list project person dateNextAction dateCreated dateCompleted importance selected'
classVariableNames: 'Database'
poolDictionaries: ''
category: 'ToDo'

新しい変数を見つけられず、値を間違ったスロットにロードするように見えるため、人は の値を取得し、取得しdateNextActionます。dateNextActiondateCreated

どうすればこれを止めることができますか?

リストの最後に新しい変数を配置することで機能するようになりましたが、変数をタイプ別にグループ化したいと考えています。

4

3 に答える 3

6

ReferenceStream はサポートされなくなり、Pharo 2.0 で削除されました。よく書かれ、よく文書化され、よくテストされ、非常に高速な Fuel を使用する必要があります。http://rmod.lille.inria.fr/web/pier/software/Fuel

于 2013-04-01T10:58:58.977 に答える
0

この本の例を完成させたい人は、次の手順に従ってください。

1. 過去にさかのぼって、https ://gforge.inria.fr/frs/?group_id=1299 から Pharo 1.4 を入手します。

下にスクロールして One-Click Pharo 1.4 を探し、最新のビルドがある場合は、https: //gforge.inria.fr/frs/download.php/file/31359/Pharo-1.4-14457- OneClick.zip

構成ブラウザを使用して Seaside をインストールすれば完了です。

1a. または、Pharo 1.3 で実行されている、ビルド済みの Seaside、Scriptaculous、Magritte、Pier イメージを使用してください: http://www.seaside.st/distributions/Seaside-3.0.7-final.zip

ここから Pharo VM を使用して幸運に恵まれました: http://files.pharo.org/vm/pharo/20/mac/stable.zip

2. Monticello を介して現在のイメージからコードを取得し、古いイメージに「戻します」。成功!

PS。詳細はこちら: Pharo の FileDirectory および ReferenceStream クラスと同等ですか?

于 2015-02-04T18:49:37.213 に答える