0

NSObject サブクラスに currentSongsList という名前の NSMutableOrderedSet プロパティがあります。NSManagedObject サブクラスに currentSongsList という名前の NSData プロパティがあります。

アプリを終了して再起動した後に取得できるように、NSMutableOrderedSet プロパティをデータベースにアーカイブしたいと考えています。

CurrentSongsInfo.h 内 -

@interface CurrentSongsInfo : NSObject

@property (nonatomic, strong) NSMutableOrderedSet *currentSongsList;

CurrentSongsInfoArchive.h 内 -

@interface CurrentSongsInfoArchive : NSManagedObject

@property (nonatomic, retain) NSData * currentSongsList;

CurrentSongsInfoArchive.m 内 -

DatabaseInterface *databaseInterfacePtr = [[DatabaseInterface alloc] init];
// Not showing code for databaseInterfacePtr:newManagedObjectOfType, but it has been working for over a year for many entity types
CurrentSongsInfoArchive *currentSongsInfoArchive = (CurrentSongsInfoArchive *)[databaseInterfacePtr newManagedObjectOfType:@"CurrentSongsInfoArchive"];

NSData *currentSongsList = [NSKeyedArchiver archivedDataWithRootObject:currentSongsInfoArchive.currentSongsList];
currentSongsInfoArchive.currentSongsList = currentSongsList;

上記の CurrentSongsInfoArchive.m のコードを実行すると、次の出力が表示されます。

currentSongsList.count = 540

2014-09-19 04:30:57.219 MusicByCarlCoreData[2863:1091413] currentSongsInfoArchive.currentSongsList.length = 135

他に 4 つの NSMutableOrderedSet プロパティがあり、そのカウント値はすべて異なります。ただし、CurrentSongsInfoArchive オブジェクトにアーカイブされると、その長さは常に 135 になります。

NSMutableOrderedSet は NSSecureCoding に準拠していますが、NSMutableOrderedSet を NSManagedObject サブクラスの属性に保存することは可能ですか?

4

1 に答える 1

0

@geo と @mitrenegade の提案に感謝します。悲しいことに、この問題を引き起こしたのは私のアーカイブ コードのばかげたバグでした。アーカイブが悪かったので、アーカイブを解除するものは何もありませんでした。

したがって、最終的な答えは...はい、NSMutableOrderedSet を NSManagedObject サブクラスの NSData 属性に保存することは可能です。

于 2014-09-21T02:03:10.390 に答える