菜鸟教程小白 发表于 2022-12-12 17:51:43

ios - Core Data iOS 应用程序在获取上下文时崩溃


                                            <p><p>我将 Quickblox 用于我的聊天应用程序,并使用核心数据来存储消息历史记录。 </p>

<p>当我登录聊天时,我重新发送了上次发送失败的消息。 (即我从 Core Data 获取消息并获取未发送的消息)</p>

<p>有时它可以工作,但有时应用程序在辅助方法(用于获取核心数据上下文)上崩溃:</p>

<pre><code>+ (NSManagedObjectContext *)context {
    return ((AppDelegate *).delegate).managedObjectContext;
}
</code></pre>

<p>我没有对 App Delegate 进行任何更改,它只是一个普通的启用 CoreData 的 AppDelegate:</p>

<pre><code>@interface AppDelegate : UIResponder &lt;UIApplicationDelegate, QBActionStatusDelegate, QBChatDelegate&gt;

@property (strong, nonatomic) UIWindow *window;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;


@end
</code></pre>

<p>这就是我在 DBHelper 类中检索消息历史记录的方式</p>

<pre><code>+ (NSMutableArray *)fetchMessagesWithSenderID:(NSString *)userID {

    NSFetchRequest *fetchRequest = [ init];
    NSEntityDescription *entity = ]; //the app crashes here, inside
    ;

    NSPredicate *pred = ;
    ;


    NSError *error;

    NSMutableArray *fetchedObjects = [ executeFetchRequest:fetchRequest error:&amp;error].mutableCopy;
    return fetchedObjects;
}
</code></pre>

<p>日志:</p>

<pre><code>2014-01-05 16:32:05.365 Chat completedWithResult: &lt;QBMRegisterSubscriptionTaskResult: 0x14e955e0&gt;
2014-01-05 16:32:05.366 Chat error: (
    &#34;Invalid provisioning profiles. You have to use valid Provisioning Profiles for your project&#34;
)
2014-01-05 16:32:06.549 Chat QBChat/didConnect
2014-01-05 16:32:07.913 Chat - -&gt; user: 573782, supportsStartTLS: 1, isSecure: 0
2014-01-05 16:32:07.913 Chat chatDidLogin
2014-01-05 16:32:07.916 Chat -: unrecognized selector sent to instance 0x14d48800
(lldb)
</code></pre>

<p> <img src="/image/UVabD.png" alt="enter image description here"/> </p>

<p> <img src="/image/AxAkD.png" alt="enter image description here"/> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><blockquote>
<p>-: unrecognized selector sent to instance 0x14d48800</p>
</blockquote>

<p>这行意味着你调用了 <code>QBMGetTokenPerformer</code> 类的对象的 <code>managedObjectContext</code> 方法,它不能识别该方法。 </p>

<p>从您问题中的代码和您显示的屏幕截图来看,这不应该发生 - 我不知道对应用程序委托(delegate)的调用如何<em>有时</em>返回一个不相关的对象 -我唯一一次看到这种情况发生是由于内存管理问题,但应用程序委托(delegate)实际上是一个单例,因此无法重新分配其内存。 </p>

<p>我只能建议您向您的应用程序添加一个异常断点 - 尽管看起来您已经有了一个。您也许可以将您的方法分成单独的行,以便您可以看到每一行发生了什么。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Core Data iOS 应用程序在获取上下文时崩溃,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20931686/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20931686/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Core Data iOS 应用程序在获取上下文时崩溃