[英]NSUserDefault storing an NSArray of Custom Object with NSMutableArray
I have seen good examples on how to store custom objects to an array inside NSUserDefault. 我已经看到了有关如何将自定义对象存储到NSUserDefault中的数组的好示例。 My question is, how can I do this if my Custom Object has an array as its property.
我的问题是,如果我的自定义对象将数组作为其属性,该怎么办。
I looked at an example given which got me this, however courses is an NSMutableArray. 我看了一个给出的例子,但是我的课程是NSMutableArray。
@implementation ClassNames
@synthesize courses;
@synthesize name;
- (void)encodeWithCoder:(NSCoder *)coder;
{
[coder encodeObject:courses forKey:@"courses"];
[coder encodeObject:name forKey:@"name"];
}
- (id)initWithCoder:(NSCoder *)coder;
{
self = [super init];
if (self != nil)
{
courses = [coder decodeObjectForKey:@"courses"] ;
name = [coder decodeObjectForKey:@"name"] ;
}
return self;
}
@end
This is what I call when I want to save and load classes 当我要保存和加载类时,这就是我所说的
- (NSMutableArray *)loadClasses{
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"classes"];
if (dataRepresentingSavedArray != nil)
{
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if (oldSavedArray != nil)
return [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
return [[NSMutableArray alloc] init];
}
return nil;
}
- (void)saveClasses:(ClassNames *)classes
{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
[standardUserDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:classes] forKey:@"classes"];
[standardUserDefaults synchronize];
}
The NSMutableArray "courses" which is in ClassNames is an NSMutableArray of NSStrings. ClassNames中的NSMutableArray“课程”是NSStrings的NSMutableArray。
Thank you. 谢谢。
NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filename = [docsPath stringByAppendingPathComponent:@"test"];
//store the array
[NSKeyedArchiver archiveRootObject:myArray toFile:filename];
//get the array
NSMutableArray* myArray = [NSKeyedUnarchiver unarchiveObjectWithFile:filename];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.