在我的 Iphone 应用程序中,我之前通过执行以下代码将标准 plist 文件加载到字典中。最近我将源代码和 plist 文件复制到一个新的包中,我将其编译成一个框架并在原始应用程序中使用。所有代码都在运行,但是 plist 加载代码找不到 settings.plist 文件了。查看路径,它似乎仍在查找主应用程序的文件。
我是否需要以某种方式更新此包以读取框架嵌入式资源?
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [[bundle resourcePath] stringByAppendingPathComponent:@"settings.plist"];
_plistDictionary = [[NSDictionary alloc] initWithContentsOfFile:path];
最佳答案
如果我没理解错的话,是的。
+[NSBundle mainBundle]
返回对应于当前应用程序可执行文件所在目录的 NSBundle
对象。所以简而言之,它将返回主应用程序的包,这不是你想要的(你想要一个框架的包,在你的应用程序的包中)。
由于您想要为您的框架获取包,如果加载该 plist 的代码驻留在框架本身中,您可以执行如下操作:
NSBundle* bundle = [NSBundle bundleForClass:[self class]];
然后返回框架的包。或者更具体地说,该类(此代码)所在的包。
关于objective-c - IOS Framework trouble load 加载嵌入式资源plist文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22872088/