У меня есть свойство NSMutableOrderedSet с именем currentSongsList в подклассе NSObject. У меня есть свойство NSData с именем currentSongsList в подклассе NSManagedObject.Можно ли сохранить NSMutableOrderedSet в атрибут NSData в подклассе NSManagedObject?
Я хочу архивировать свойство 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
У меня есть четыре другие свойства NSMutableOrderedSet, чьи значения счетчика все другой. Но когда они заархивированы в объект CurrentSongsInfoArchive, их длина всегда равна 135.
NSMutableOrderedSet соответствует NSSecureCoding, но возможно ли сохранить NSMutableOrderedSet в атрибуте в подклассе NSManagedObject?
Хмм, вы держите песни и в БД? Если вы не кодируете список, вы можете просто создать нормальные отношения между Song и PlayList и удерживать это как «orderedSet» – geo
Песни находятся в БД, но в списках в объекте CurrentSongsInfo хранятся только теги inInternID как NSNumbers. Когда я пытался хранить списки в базе данных, производительность была ужасной. CurrentSongsList может содержать идентификаторы songInternalID для каждой песни в медиатеке пользователя iTunes. Я пытаюсь найти другой подход, который не включает в себя хранение всего списка, но все же позволяет NowPlayingViewController потенциально выбирать из каждой песни в базе данных. До сих пор я не понял, как это сделать. –
Вы пытались сохранить эти NSMutableOrderedSets как NSMutableArray? Мне удалось сохранить массивы в атрибутах NSData и загрузить их обратно. http://stackoverflow.com/questions/25416132/how-do-you-store-data-from-nsmutable-array-in-core-data/25417855#25417855 – mitrenegade