1
archivedDataWithRootObjectメソッドを取得してencodeWithCoderを呼び出すことはできませんが、わかりやすく簡単ですが動作しません。NSKeyedArchiver archivedDataWithRootObject:encodeWithCoderを呼び出さない
#import <Foundation/Foundation.h>
@interface Details : NSObject <NSCoding>{
NSMutableArray *myArray;
}
@property(nonatomic,retain) NSMutableArray *myArray;
@end
#import "Details.h"
@implementation Details
@synthesize myArray;
-(id)init{
[super init];
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder{
NSLog(@"initWithCoder");
if (self = [super init])
{
self.myArray = [[aDecoder decodeObjectForKey:@"details"]retain];
}
return self;
}
- (NSMutableArray*)getDetails{
NSLog(@"getDetials");
// NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *details = [[NSUserDefaults standardUserDefaults] objectForKey:@"details"];
if (details != nil){
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:details];
if (oldSavedArray != nil)
self.myArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
self.myArray = [[NSMutableArray alloc] initWithCapacity:1];
}
return self.myArray;
}
- (void) addDetails:(NSMutableArray *)details{
NSLog(@"add Details");
[self.myArray addObject:details];
[NSKeyedArchiver archivedDataWithRootObject:self.myArray];
}
- (void) encodeWithCoder:(NSCoder *)coder;
{
NSLog(@"encodeWithCoder");
[coder encodeObject:self.myArray forKey:@"details"];
}
@end
のNSLog(@ "encodeWithCoder")は実行されません: は、ここでは、コードです。 何か不足している可能性があります。
はあなたにそんなにjackslashありがとう、私は今理解だと思います。少なくとも方法を呼んで、残りの部分を取り除いてください。驚くばかり。 Brett – BrettStuart
[NSKeyedArchiver archiveRootObject:_rootObject toFile:_filePath]を使用すると、ファイルに直接アーカイブすることができます。 – Edwin