#import <Foundation/Foundation.h>
@interface MyObject : NSObject <NSCoding>{
NSNumber *newCheck_;
NSNumber *favoraite_;
}
@property(nonatomic, retain) NSNumber* newCheck_;
@property(nonatomic, retain) NSNumber* favoraite_;
-(void)readData:(NSString*)path;
-(void)writeData:(NSString*)path;
@end
@implementation MyObject
@synthesize newCheck_;
@synthesize favoraite_;
- (id)init
{
if (self = [super init]) {
self.newCheck_ = [NSNumber numberWithInt:0];
self.favoraite_ = [NSNumber numberWithInt:0];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder {
// シリアライズ時に呼び出される。
[coder encodeObject:newCheck_ forKey:@"newCheck"];
[coder encodeObject:favoraite_ forKey:@"favoraite"];
}
- (id)initWithCoder:(NSCoder *)coder {
// デシリアライズ時に呼び出されるイニシャライザ
if (self = [super init]) {
// オブジェクトの生成ではないので、retainを忘れないように。
newCheck_ = [[coder decodeObjectForKey:@"newCheck"] retain];
favoraite_ = [[coder decodeObjectForKey:@"favoraite"] retain];
}
return self;
}
-(void)readData:(NSString*)path{
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
// 空なら初期化
if( [defaults objectForKey:path] == NULL ){
self.newCheck_ = [NSNumber numberWithInt:0];
self.favoraite_ = [NSNumber numberWithInt:0];
}else{
NSData* readData = (NSData*)[defaults objectForKey:path];
self = [NSKeyedUnarchiver unarchiveObjectWithData:readData];
}
// test用
newCheck_ = [NSNumber numberWithInt:1];
favoraite_ = [NSNumber numberWithInt:1];
NSLog( @"A %@ %@ ", newCheck_, self.favoraite_ );
}
-(void)writeData:(NSString*)path{
NSData* writeData = [NSKeyedArchiver archivedDataWithRootObject:self];
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:writeData forKey:path];
[defaults synchronize];
}
@end
@interface TestObj
@end
@implementation TestObj
int main() {
struct {
int row;
} indexPath;
NSNumber *newCheck_ = [[NSNumber alloc] initWithInt:1];
struct {
NSNumber *favoraite_;
} self;
indexPath.row = 346;
self.favoraite_ = [[NSNumber alloc] initWithInt:1];
// 実装部分
MyObject *myObj = [[MyObject alloc] init];
NSString *path = [NSString stringWithFormat:@"DATA_%03d", (int)indexPath.row];
[myObj readData:path];
NSLog( @"B %@ %@ ", newCheck_, self.favoraite_ );
return 0;
}
@end