-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
NSLog(@"Start encode");
for (int index = 1; index <= [self.view.subviews count]-1; index++) {
NSString *encodeKey = [NSString stringWithFormat:@"%dnumber",index];
UILabel *label = self.view.subviews[index];
[coder encodeObject:label forKey:encodeKey];
NSLog(@"%@",label);
}
[coder encodeInteger:[self.view.subviews count] forKey:@"count"];
[super encodeRestorableStateWithCoder:coder];
NSLog(@"End encode");
}
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
NSUInteger number = [coder decodeIntegerForKey:@"count"];
NSLog(@"Start decode");
for (int index = 1; index <= number-1; index++) {
NSString *encodeKey = [NSString stringWithFormat:@"%dnumber",index];
UILabel *label = [coder decodeObjectForKey:encodeKey];
NSLog(@"%@",label);
[self.view addSubview:label];
}
NSLog(@"End decode");
[super decodeRestorableStateWithCoder:coder];
}
上記のコードは、サブビューとして画面に追加したすべての UILabel を for ループを介してエンコードするために使用されます。ただし、デコードするときに得られるのはコンソールからの (null) だけです。助けてください。