Iphone 来自静态库的包
我在主项目中添加了一个子项目作为静态库 现在,在主项目上,我尝试加载子项目包中的一些内容。大概是这样的:Iphone 来自静态库的包,iphone,ios,ipad,cocoa-touch,cocoa,Iphone,Ios,Ipad,Cocoa Touch,Cocoa,我在主项目中添加了一个子项目作为静态库 现在,在主项目上,我尝试加载子项目包中的一些内容。大概是这样的: NSString *defaultStorePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"database" ofType:@"sqlite"]; 但这是归零 我该如何解决这个问题呢?试试这样的方法 NSString *resourceBundlePath = [[NSBundle mainBund
NSString *defaultStorePath =
[[NSBundle bundleForClass:[self class]] pathForResource:@"database" ofType:@"sqlite"];
但这是归零
我该如何解决这个问题呢?试试这样的方法
NSString *resourceBundlePath = [[NSBundle mainBundle]
pathForResource:@"StaticLibrary"
ofType:@"bundle"];
NSBundle *resourceBundle = [NSBundle bundleWithPath:resourceBundlePath];
现在,您可以将此resourceBundle用作静态库捆绑包 A-live给出了答案,但他太谦虚了,没有把答案贴在这里 下面是答案的链接
这个问题正是因为在创建静态库时没有包含资源。我也有类似的问题,在我的例子中,BundleWithiIdentifier出于某种原因返回了nil。如果其他方法都不起作用,您可以尝试遍历所有文件,如下所示。这对我很管用
[self urlForResource:@"database.sqlite"];
// ...
- (NSURL *)urlForResource:(NSString *)resource
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *directoryURL = [NSBundle bundleForClass:[self class]].bundleURL;
NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtURL:directoryURL includingPropertiesForKeys:nil options:0 errorHandler:^BOOL(NSURL *url, NSError *error) {
return YES;
}];
for (NSURL *url in enumerator)
{
NSString *lastPathComponent = [[url absoluteString] lastPathComponent];
if ([lastPathComponent isEqual:resource])
return url;
}
return nil;
}
如何使用子捆绑包的CbundleIndentifier
[NSBundle bundleWithiIdentifier:…]
呢?我没有特别创建此捆绑包。在哪里可以找到捆绑包标识符?简单的事情在Xcode上是复杂的。是否将“database.sqlite”复制到应用程序包中?它在捆绑包中的确切位置?database.sqlite被复制到捆绑包中。它位于MyBundle/MyBundle/coredata/database.sqlite中。您可以尝试按名称初始化包吗?Xcode不会自动为libs创建资源包,请浏览您的主包内容(在设备上或在iphonesimulator
dir)以明确您有哪些文件,注意iphonesimulator
可能包含您已经从项目中删除的文件。