我有一个简单的问题:为什么“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);
感谢您的帮助
答案 0 :(得分:1)
如果您的应用程序委托是在nib文件中创建的,则不会调用init
方法。 nib中的项目已存档已初始化。
如果要初始化从NIB加载的对象,请实现- (void) awakeFromNib
方法。
答案 1 :(得分:0)
您正在记录“origine”词典,它会记录到控制台?如果没有“Root”键那么你显然没有打开正确的文件。如果字典为NULL,则需要修复路径。
您确定 finalPath 包含正确的路径吗?似乎origin.plist在资源文件夹中,但您在查找程序中使用了应用程序包的位置。