2010-08-08 36 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