是否有可能将NSMutableOrderedSet保存到NSManagedObject子类中的NSData属性?

问题描述:

我在NSObject子类上有一个名为currentSongsList的NSMutableOrderedSet属性。 我在NSManagedObject子类上有一个名为currentSongsList的NSData属性。是否有可能将NSMutableOrderedSet保存到NSManagedObject子类中的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年9月19日04:30:57.219 MusicByCarlCoreData [2863:1091413] currentSongsInfoArchive.currentSongsList.length = 135

我有其他四个NSMutableOrderedSet性质,其计值都不同。但是,当他们被归档到CurrentSongsInfoArchive对象,它们的长度总是135

NSMutableOrderedSet符合NSSecureCoding,但它甚至有可能到NSMutableOrderedSet保存在NSManagedObject子类的属性?

+0

嗯,你还拿着歌曲的数据库?如果您没有隐藏该列表,则可以在Song和PlayList之间创建一个常规关系,并将其保持为“orderedSet” – geo 2014-09-19 12:27:27

+0

歌曲位于数据库中,但CurrentSongsInfo对象中的列表仅将songInternalIDs保存为NSNumbers。当我试图在数据库中保存列表时,性能很糟糕。 currentSongsList可以包含用户iTunes资料库中每首歌曲的歌曲内部ID。我试图找到一种不涉及存储整个列表的不同方法,但仍然允许NowPlayingViewController从数据库中的每首歌曲中进行选择。到目前为止,我还没有想出一个办法来做到这一点。 – 2014-09-19 14:00:57

+0

您是否尝试将这些NSMutableOrderedSets存储为NSMutableArray?我已经设法将数组存储到NSData属性中并加载它们。 http://*.com/questions/25416132/how-do-you-store-data-from-nsmutable-array-in-core-data/25417855#25417855 – mitrenegade 2014-09-20 03:04:28

谢谢@geo和@mitrenegade的建议。可悲的是,这是我的存档代码中导致问题的一个愚蠢的错误。由于存档不好,所以没有任何可以解密的东西。

因此,最终答案... 是的有可能将NSMutableOrderedSet保存到NSManagedObject子类中的NSData属性。