2013-04-09 2 views
2

메인 프로젝트에 정적 라이브러리로 하위 프로젝트를 추가했습니다.정적 라이브러리에서 번들

이제 기본 프로젝트에서 하위 프로젝트 번들에있는 내용을로드하려고합니다. 이런 식으로 뭔가 :

NSString *defaultStorePath = 
[[NSBundle bundleForClass:[self class]] pathForResource:@"database" ofType:@"sqlite"]; 

하지만,이 반환 전무 ... 나는 그것을 해결 어떻게

? 이 같은

+0

서브 번들의 CFBundleIndentifier와 함께 [NSBundle bundleWithIdentifier : ...]'는 어떻게됩니까? –

+0

특히이 번들을 작성하지 않았습니다. 번들 식별자는 어디에서 찾을 수 있습니까? Xcode에서는 간단한 일이 복잡합니다. – SpaceDog

+0

"database.sqlite"가 응용 프로그램 번들에 복사 되었습니까? 번들 안에 정확히 어디에 위치합니까? –

답변

1

시도 뭔가 .. 이제

NSString *resourceBundlePath = [[NSBundle mainBundle]  
        pathForResource:@"StaticLibrary" 
             ofType:@"bundle"]; 

    NSBundle *resourceBundle = [NSBundle bundleWithPath:resourceBundlePath]; 

, 당신은 정적 라이브러리 번들로이 ResourceBundle을 사용할 수 있습니다.

0

나는 비슷한 문제가 있었고 제 경우에도 bundleWithIdentifier가 어떤 이유로 든 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; 
} 
관련 문제