2014-11-04 33 views
2

訪問資源包我做了什麼無法從定製的框架使用的CoreFoundation

我已經建立了一個自定義的iOS框架,我們會打電話給CustomFramework.framework以及爲伴隨資源包一些sqlite文件叫做CustomFramework.bundle。我已經將我的框架和資源包添加到另一個項目中,並且它已成功構建。

我所試圖做的

我試圖訪問使用的CoreFoundation資源包。然後我想選擇一個特定的sqlite文件並打開它。

到底哪裏出問題了

有我的框架調用ResourceHelper.cpp內的文件。這裏是我想打開sqlite文件的地方。我正在嘗試獲取捆綁的參考CustomFramework.bundle。要做到這一點,我有這樣的一行:

CFBundleRef mainBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.mycompany.CustomFramework")); 

,並在我的CustomFramework-Info.plist中Bundle identifercom.mycompany.CustomFramework。這行代碼返回NULL;在調試器中它看起來像mainBundle = (CFBundleRef) 0x0

爲什麼找不到我的框架資源包?

感謝

回答

1

什麼結束了工作了,我不得不只包名稱附加到主束路徑。這是它的工作原理。

std::string dbName = "database"; 
std::string resourcePath = "CustomFramework.bundle/"; 

CFBundleRef mainBundle = CFBundleGetMainBundle(); 
CFStringRef cf_dbName = CFStringCreateWithCString(NULL, dbName.c_str(), kCFStringEncodingUTF8); 
CFStringRef cf_path = CFStringCreateWithCString(NULL, resourcePath.c_str(), kCFStringEncodingUTF8); 

CFURLRef url = CFBundleCopyResourceURL(mainBundle, cf_dbName, CFSTR("sqlite"), cf_path);