Хранение пользовательских объектов в NSMutableArray, затем сохранение этого NSMutableArray в NSUserDefaults - PullRequest
1 голос
/ 18 сентября 2011

Я хотел бы сохранить некоторые пользовательские объекты в NSMutableArray, а затем сохранить этот NSMutableArray в NSUserDefaults. Пользовательские объекты выглядят так:

@interface myCustomClass:NSObject
{
    NSString *string1;
    NSString *string2;
    NSArray *array;
    NSURL   *URL;
}
@end

Я проверил документацию по разработке и узнал, что NSUserDefaults поддерживает только некоторые типы, такие как NSData, NSDate, NSString, NSArray, NSDictionary. Я некоторое время искал ответ на свой вопрос, но не нашел решения. Кто-нибудь, пожалуйста, дайте мне знать, как я могу сохранить свои пользовательские объекты, перечисленные выше, в NSMutableArray, затем сохранить этот массив в NSUserDefaults и как получить этот изменяемый массив? Заранее большое спасибо.

1 Ответ

3 голосов
/ 18 сентября 2011

Объекты, которые можно кэшировать с помощью NSUserDefaults, должны быть списками свойств. Если вы действительно хотите использовать NSUserDefaults для их кэширования, вы должны сначала реализовать метод, который возвращает все атрибуты, необходимые для воссоздания вашего объекта. Это будет означать представление списка свойств вашего объекта, такого как NSDictionary. Думайте с точки зрения сериализации / десериализации. Для вашего случая вы должны убедиться, что ваш NSarray ivar в свою очередь содержит только списки свойств. Если вы можете воссоздать NSURL, используя только NSString, то вместо этого сохраните NSString. Вы видите, что становится все сложнее!

Намного проще было бы реализовать протокол NSCoding в вашем пользовательском классе и сохранить / получить ваш объект или NSArray объектов с использованием NSKeyedArchiver и NSKeyedUnarchiver. Для реализации протокола NSCoding необходимо реализовать только два метода initWithCoder: и encodeWithCoder:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...