我似乎无法在我的开发iPhone 6上引用我的应用程序打包的文件。可以在XCode的iPhone 6模拟器中找到它。
我想引用的文件:
我在哪里引用该文件:
NSString *epubPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"epubjs/ios.html"];
返回错误:
Error Domain=NSCocoaErrorDomain Code=260 "The file “ios.html” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/containers/Bundle/Application/8BB11DEC-4823-4603-83E7-F4C23BC3C983/BSAVA.app/epubjs/ios.html, NSUnderlyingError=0x126df1110 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
我已经尝试了各种方法来获取NSBundle中的文件列表和/或搜索文件但是当它在实际设备上运行时我无法在应用程序中找到它:
//
NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:bundleRoot error:nil];
NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self ENDSWITH '.html'"];
NSArray *onlyHTMLs = [dirContents filteredArrayUsingPredicate:fltr];
NSLog(@".html file array: %@", onlyHTMLs);
//
NSError * error;
NSString * resourcePath = [[NSBundle mainBundle] resourcePath];
NSArray * directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:resourcePath error:&error];
//
NSString * documentsPath = [resourcePath stringByAppendingPathComponent:@"BSAVA"];
NSArray * directoryContents2 = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:&error];
//
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"ios" ofType:@"html"];
NSURL *path = [[NSBundle mainBundle] URLForResource:@"ios" withExtension:@"html"];
//
这些都归零。
答案 0 :(得分:1)
从评论中与您的对话看来,您只是忘记将文件与应用程序捆绑在一起,因此它们根本不存在于运行时。我不明白模拟器和设备之间的行为差异,但我认为这是一个红色的鲱鱼,因为它应该都失败。
此Apple Guide显示了如何在构建期间将文件复制到应用包中。