2010-08-08 63 views
0

我有一个级别类,巫包含一些属性另一类LevelPoints,我如何通过使用对象内的对象的NSKeyedArchiver archiveRootObject不起作用!

[projectDictionary setObject:level forKey:@"testlevel"]; 
[NSKeyedArchiver archiveRootObject:projectDictionary toFile:@"somewhere"]; 

我无法用值了[NSKeyedUnarchiver unarchiveObjectWithFile的_levelPoints变量归档级别的实例: DATAPATH];

任何想法?

#import <Foundation/Foundation.h> 

@interface Level : NSObject <NSCoding> { 
    int _levelNum; 
    float _spawnRate; 
    NSString *_bgImageName; 
    LevelPoints *_levelPoints; 
} 

@property (nonatomic, assign) int levelNum; 
@property (nonatomic, assign) float spawnRate; 
@property (nonatomic, copy) NSString *bgImageName; 
@property (nonatomic, retain) LevelPoints *levelPoints; 

- (id)initWithLevelNum:(int)levelNum spawnRate:(float)spawnRate bgImageName:(NSString *)bgImageName; 

- (id)initWithCoder:(NSCoder *)aDecoder; 
- (void)encodeWithCoder:(NSCoder *)aCoder; 

@end 


#import <Foundation/Foundation.h> 


@interface LevelPoints : NSObject <NSCoding> { 
    int _score; 
    int _outflows; 
    int _mistakes; 
} 
@property (nonatomic, assign) int score; 
@property (nonatomic, assign) int outflows; 
@property (nonatomic, assign) int mistakes; 

- (id)initWithCoder:(NSCoder *)aDecoder; 
- (void)encodeWithCoder:(NSCoder *)aCoder; 
@end 
+0

没有实现文件,很难分辨出现问题。 – Eiko 2010-08-08 10:08:27

回答

0

你的意思是这样的:

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    ... 
    self.levelPoints = [aDecoder decodeObjectForKey: @"myKey"]; 
    ... 
} 

- (void)encodeWithCoder:(NSCoder *)aCoder 
{ 
    ... 
    [aCoder encodeObject:self.levelPoints forKey: @"myKey"]; 
    ... 
} 

编辑:这些实现应该进入级赛事。

+0

这是肯定的。我试过这个[aCoder encodeObject:self.levelPoints forKey:@“myKey”]以及.m实现文件,我无法通过self.levelPoints = [aDecoder decodeObjectForKey:@“myKey”]获取数据。 也许旁边还有别的东西,我今天再试一次。 谢谢 – user409187 2010-08-09 00:25:49