iOS中资源返回的NSBundle路径为零

时间:2016-05-26 19:34:47

标签: ios objective-c nsbundle

我的bgs.bundle包含20张图片,我试图加载image_file。

NSString *bpath = [[NSBundle mainBundle] pathForResource:@"bgs" ofType:@"bundle"];
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bpath error:NULL];
for (NSString *fileName in files) {
    NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"nil"];
        if (filePath){
                NSLog(filePath);
        }else{
            NSLog(@"file path is null");
        }

filePath始终为空,我还打印了fileName,它运行正常。 我的代码有什么问题,或者有其他方法从bundle加载文件?

1 个答案:

答案 0 :(得分:2)

您的主要问题是您尝试从主要包而不是<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:text="TOOOOOO LONG TEXT..." android:layout_height="wrap_content" /> </android.support.v4.widget.NestedScrollView> 加载fileName

更改您的代码:

bgs.bundle

另一种选择是为NSString *bpath = [[NSBundle mainBundle] pathForResource:@"bgs" ofType:@"bundle"]; NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bpath error:NULL]; for (NSString *fileName in files) { NSString *filePath = [bpath stringByAppendingPathComponent:fileName]; NSLog(@"filePath = %@", filePath); } 获取NSBundle

bgs.bundle

现在您可以根据需要使用NSString *bpath = [[NSBundle mainBundle] pathForResource:@"bgs" ofType:@"bundle"]; NSBundle bgsBundle = [NSBundle bundleWithPath:bpath]; 。例如:

bgsBundle