私のプロジェクトでは、UIImage、NSMutableArray、およびNSStringオブジェクトを持つカスタムオブジェクト(Person)を保存する必要があります。現在、NSStringオブジェクトをエンコードしてデコードし、NSUserDefaultにPersonをアーカイブすることができます。すべてUIImageとNSArrayを除いて正常に動作します。UIImageとNSMutableArrayを含むNSUserDefaultにカスタムオブジェクトを保存するにはどうすればいいですか?
-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init]) {
self.userName = [aDecoder decodeObjectForKey:@"userName"]; //NSString
self.profileImage = [aDecoder decodeObjectForKey:@"profileImage"]; //UIImage
self.uplodedVideoArray = [aDecoder decodeObjectForKey:@"uplodedVideoArray"]; //NSMutableArray
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.userName forKey:@"userName"]; //NSString
[aCoder encodeObject:self.profileImage forKey:@"profileImage"]; //UIImage
[aCoder encodeObject:self.uplodedVideoArray forKey:@"uplodedVideoArray"]; //NSMutableArray
}
-(void)archivePerson
{
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:[Person sharedInstance]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:encodedObject forKey:@"Person"];
[defaults synchronize];
}
-(Person *)unarchivePerson
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *encodedObject = [defaults objectForKey:@"Person"];
Person *person = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];
return person;
}
実際、UIImageを保存することは私の懸念事項ではありません。カスタムオブジェクトをNSUserDefaultに保存します。実際に私はそれをやった。すべてのNSStringプロパティは期待どおりに動作していますが、カスタムオブジェクトを展開すると画像が取得できません。 – Rokon