来自plist的“Root”键无法从AppDelegate中识别出来?

时间:2011-08-08 15:05:20

标签: objective-c plist

我有一个简单的问题:为什么“origineArray”会返回(null)?我发现如果我将所有代码放在RootViewController中它可以工作,但如果我把它放在AppDelegate中(因为它是在示例代码中,我不是哪种方式更好?),它不会识别“ Root“key:

- (id)init {
    self = [super init];
    if (self){
        NSString *path = [[NSBundle mainBundle] bundlePath];
        NSString *finalPath = [path stringByAppendingPathComponent:@"origine.plist"];
        origine = [[NSDictionary dictionaryWithContentsOfFile:finalPath]retain];
    }
    return self;
}


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    NSLog(@"origine data : %@", origine);
    NSArray *origineArray = [origine objectForKey:@"Root"];
    NSLog(@"origineArray data : %@", origineArray);

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

如果您的应用程序委托是在nib文件中创建的,则不会调用init方法。 nib中的项目已存档已初始化。

如果要初始化从NIB加载的对象,请实现- (void) awakeFromNib方法。

答案 1 :(得分:0)

您正在记录“origine”词典,它会记录到控制台?如果没有“Root”键那么你显然没有打开正确的文件。如果字典为NULL,则需要修复路径。

您确定 finalPath 包含正确的路径吗?似乎origin.plist在资源文件夹中,但您在查找程序中使用了应用程序包的位置。