菜鸟教程小白 发表于 2022-12-12 11:11:18

iphone - 打开 UIManagedDocument 花费太多时间


                                            <p><p>最近,我在 iOS 中使用一个时间表应用程序,但我在使用 Core Data 时遇到了问题。</p>

<p>我的应用程序有一个类似于 Apple 创建的原始日历应用程序的主用户界面,我将所有事件数据保存在 Core Data 数据库中。</p>

<p>我创建了一个 <strong>UIManagedDocument</strong>,以便使用它的 <strong>NSManagedObjectContext</strong> 从数据库中获取数据,一切正常。</p>

<p>但是,我需要在运行时使用 <strong>NSManagedObjectContext</strong> 在几个不同的 ViewController 中多次获取数据。每次执行此操作时,我都需要重新打开 <strong>UIManagedDocument</strong>,但打开文档需要花费太多时间(可能需要 2 秒甚至更长时间,我必须在 View 中显示微调器)。</p>

<p>所以这是我的问题:</p>

<ol>
<li>打开 managedDocument 的正确方法是什么?(我的意思是在午餐图像时间打开它?)</li>
<li>有没有办法只打开一次 managedDocument 并在运行时保持打开状态?(所以我可以一直使用它的上下文)</li>
<li>数据是否存储在我创建的 managedDocument 中?(我发现如果我删除文档,数据就消失了)</li>
</ol>

<p>谢谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你会得到很多关于如何做到这一点的不同意见,但基本上你应该只需要打开一次文档。这是由一些对象完成的,该对象完成工作并存储它,以便在不同的 ViewController 询问时可以再次返回它。</p>

<p>许多人为此创建单例或将其放在 App Delegate 中。我已经实现了一个 <code>protocol</code>,它可以让我把它放在对特定应用程序方便的地方,而我的其他代码不必知道任何关于返回信息的对象的信息。只要它响应协议(protocol),它就可以是 App Delegate、单例类或任何其他对象类型。</p>

<p>见 <a href="https://stackoverflow.com/questions/8421138/importing-appdelegate/9853740#9853740" rel="noreferrer noopener nofollow">importing AppDelegate</a> </p>

<p>我在上面示例中放置的协议(protocol)只是返回有关数据库位置的信息。在我的实际实现中,我有一个带有回调的 <code>openDatabase</code> 方法,让我知道它何时完成以及自动初始化和更新方法。</p>

<p>您还可以通过在主线程之外执行打开操作来提高性能。这使您的 UI 保持响应,但不会更快地显示数据,您必须小心托管对象上下文及其所在的线程。</p>

<p>祝你好运……</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 打开 UIManagedDocument 花费太多时间,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/16719832/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/16719832/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 打开 UIManagedDocument 花费太多时间