ios - 无法使用 CoreFoundation 从自定义框架访问资源包
<p><p><strong>我做了什么</strong></p>
<p>我已经构建了一个自定义的 iOS 框架,我们将称之为 <strong>CustomFramework.framework</strong> 以及一个用于一些名为 <strong>CustomFramework.bundle</strong> 的 sqlite 文件的随附资源包。我已将我的框架和资源包添加到另一个项目中,并且构建成功。</p>
<p><strong>我要做什么</strong></p>
<p>我正在尝试使用 <strong>CoreFoundation</strong> 访问资源包。然后我想选择一个特定的 sqlite 文件并打开它。</p>
<p><strong>出了什么问题</strong></p>
<p>我的框架<em>内</em>有一个名为<strong>ResourceHelper.cpp</strong>的文件。这是我要打开 sqlite 文件的地方。我正在尝试获取对 <strong>CustomFramework.bundle</strong> 包的引用。为此,我有这行:</p>
<pre><code>CFBundleRef mainBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.mycompany.CustomFramework"));
</code></pre>
<p>在我的 <strong>CustomFramework-Info.plist</strong> 中,<code>Bundle identifer</code> 字段是 <code>com.mycompany.CustomFramework</code>。这行代码返回<strong>NULL</strong>;在调试器中它看起来像 <code>mainBundle = (CFBundleRef) 0x0</code>.</p>
<p><strong>为什么我找不到我的框架资源包?</strong></p>
<p>谢谢</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>最终的工作是我必须将包名称附加到主包路径。这是它的工作原理。</p>
<pre><code>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);
</code></pre></p>
<p style="font-size: 20px;">关于ios - 无法使用 CoreFoundation 从自定义框架访问资源包,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/26742304/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/26742304/
</a>
</p>
页:
[1]