Here's what I have so far which works to an extent:
CustomClass.h:
Code:
#import <Foundation/Foundation.h>
@interface CustomClass : NSObject <NSCoding> {
NSString *name;
float value1;
int value2;
}
-(NSString*)name;
-(float)value1;
-(int)value2;
-(void)setName:(NSString *)input;
-(void)setValue1:(float)input;
-(void)setValue2:(int)input;
@end
CustomClass.m:
Code:
#import "CustomClass.h"
@implementation CustomClass
-(id)initWithCoder:(NSCoder *)coder {
self = [[CustomClass alloc] init];
if (self != nil) {
self.name = [coder decodeObjectForKey:@"name"];
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:name forKey:@"name"];
}
-(int)value2 {
return value2;
}
-(float)value1 {
return value1;
}
-(NSString*)name {
return name;
}
-(void)setValue1:(float)input {
value1 = input;
}
-(void)setValue2:(int)input {
value2 = input;
}
-(void)setName:(NSString *)input {
[input retain];
[name release];
name = input;
}
-(void)dealloc {
[super dealloc];
[name release];
}
@end
Save Array:
Code:
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
[currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:dataArray] forKey:@"savedArray"];
[currentDefaults synchronize];
Retrieve Array:
Code:
dataArray = [[NSMutableArray alloc] init];
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"savedArray"];
if (dataRepresentingSavedArray != nil) {
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if(oldSavedArray != nil) {
dataArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
}
else {
dataArray = [[NSMutableArray alloc] init];
}
}
This works to save and load an array of my custom objects to a table view. The only problem: the custom objects value's have been reset when I relaunch. I want to maintain the values of my custom objects (i.e. the name, value1, and value2). Can someone tell me where I went wrong? Thanks.