Это пример пользовательского объекта, преобразованного в NSData (поэтому его можно сохранить в пользовательские настройки по умолчанию)
Создайте следующие файлы:
Catalog.h
@interface Catalog : NSObject
@property (nonatomic, assign) int pk;
@property (nonatomic, copy) NSString *catalogName;
@property (nonatomic, copy) NSString *catalogDescription;
@property (nonatomic, assign) int catalogEdition;
@property (nonatomic, assign) int catalogTotalPages;
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
@end
Catalog.m
#import <Foundation/Foundation.h>
#import "Catalog.h"
@implementation Catalog
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.catalogName forKey:@"catalogName"];
[aCoder encodeObject:self.catalogDescription forKey:@"catalogDescription"];
[aCoder encodeInt:self.catalogEdition forKey:@"catalogEdition"];
[aCoder encodeInt:self.catalogTotalPages forKey:@"catalogTotalPages"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init]) {
self.catalogName = [aDecoder decodeObjectForKey:@"catalogName"];
self.catalogDescription = [aDecoder decodeObjectForKey:@"catalogDescription"];
self.catalogEdition = [aDecoder decodeIntForKey:@"catalogEdition"];
self.catalogTotalPages = [aDecoder decodeIntForKey:@"catalogTotalPages"];
}
return self;
}
@end
Наконец, в вашем контроллере есть заголовочные файлы
#import "Catalog.h"
И добавьте этот код для использования вашего объекта (в этом случае я сохраняю его в пользовательские настройки по умолчанию)
Catalog *catalog = [[Catalog alloc] init];
catalog.catalogName = @"catalogName";
catalog.catalogDescription = @"catalogName";
catalog.catalogEdition = 1;
ПРИМЕЧАНИЕ: в этой строке кода происходит фактическая передача данных
//archiving object to nsdata
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:catalog];
[[NSUserDefaults standardUserDefaults] setObject:encodedObject forKey:@"keyName"];
[[NSUserDefaults standardUserDefaults] synchronize];
В случае, если вы хотите вернуть свой объект из NSData
NSData *nsData = [[NSUserDefaults standardUserDefaults] objectForKey:@"keyName"];
//unarchiving object to nsdata
Catalog *selectedCatalog = [NSKeyedUnarchiver unarchiveObjectWithData: nsData];
Надеюсь, это поможет!