菜鸟教程小白 发表于 2022-12-13 03:12:07

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(&#34;com.mycompany.CustomFramework&#34;));
</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 = &#34;database&#34;;
std::string resourcePath = &#34;CustomFramework.bundle/&#34;;

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(&#34;sqlite&#34;), 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]
查看完整版本: ios - 无法使用 CoreFoundation 从自定义框架访问资源包