相关疑难解决方法(0)

在iOS上加载NSBundle文件

我想创建一个具有非常灵活的图形用户界面(skinnable)的项目.为了实现这一点,我想从外部资源(例如网站)加载NSBundle.捆绑包应包含与主项目中的某些属性和方法相对应的nib(IBOutlets和IBActions)

Apple似乎限制了以这种方式使用NSBundle的可能性.有什么方法可以让我的工作吗?如果以传统方式不可能,那么什么是可推荐的替代方法?

loading nsbundle ios

26
推荐指数
2
解决办法
2万
查看次数

从Objective-c中的.bundle加载png时出错

我正在我的Xcode项目中构建一个框架.为了构建框架,我创建了一个聚合目标.该框架由静态库,头文件和.png资产包组成MyFrameworkResources.bundle.当我构建聚合时,一切都已成功创建,并且bundle存在于Products目录中.

我的Xcode项目中还有一个目标应用程序.此应用程序用于测试框架产品(静态库,头文件和包).我已经添加了静态库和MyFrameworkResources.bundle目标应用程序的目标依赖项.我还在MyFrameworkResources.bundle目标应用程序的Build Phases中添加了Copy Bundle Resources.

我可以使用静态库中的所有文件,但是在尝试从bundle中加载资源时出现错误.这就是我从捆绑中加载资产的方式:

NSString *mainBundlePath = [[NSBundle mainBundle] resourcePath];
NSString *frameworkBundlePath = [mainBundlePath stringByAppendingPathComponent:@"MyFrameworkResources.bundle"];
NSBundle *frameworkBundle = [NSBundle bundleWithPath:frameworkBundlePath];
NSLog(@"bundle: %@", frameworkBundle);

NSError *error;
[frameworkBundle loadAndReturnError:&error]; // <-- THIS RETURNS AN ERROR
NSLog(@"error: %@", error);
UIImage *image = [UIImage imageWithContentsOfFile:[frameworkBundle pathForResource:@"AnyImage" ofType:@"tiff"]]; // <-- EDIT, USE "tiff", NOT "png"
Run Code Online (Sandbox Code Playgroud)

当我记录捆绑包时,我得到了这个:

bundle: NSBundle/Users/my_comp/Library/Application Support/iPhone Simulator/6.1/Applications/blah-blah-blah/MyApp.app/MyFrameworkResources.bundle(尚未加载)

当我记录错误时,我得到了这个:

错误: 错误Domain = NSCocoaErrorDomain Code = 4"无法加载捆绑包"MyFrameworkResources",因为无法找到其可执行文件." UserInfo = 0x7535ee0 {NSLocalizedRecoverySuggestion =尝试重新安装捆绑包.,NSLocalizedFailureReason =无法找到捆绑包的可执行文件.,NSLocalizedDescription =无法加载捆绑包"MyFrameworkResources",因为无法找到其可执行文件.,NSBundlePath =/Users/my_comp/Library/Application Support/iPhone …

xcode png bundle objective-c ios

4
推荐指数
1
解决办法
2035
查看次数

标签 统计

ios ×2

bundle ×1

loading ×1

nsbundle ×1

objective-c ×1

png ×1

xcode ×1