Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 保存脱机/断开连接的花名册_Ios_Objective C_Core Data_Xmpp_Xmppframework - Fatal编程技术网

Ios 保存脱机/断开连接的花名册

Ios 保存脱机/断开连接的花名册,ios,objective-c,core-data,xmpp,xmppframework,Ios,Objective C,Core Data,Xmpp,Xmppframework,我从xmppframeworkforios下载了SampleProject,并将其连接到我的Jabber服务器。一切都好 但是我想让我的好友留在好友概览中,即使我已断开连接(连接丢失)。可能吗?据我所知,XMPPCoreStorage将它们保存在CoreData中。为什么要在断开连接时进行清洁?是否可以在断开时禁用清洁?很遗憾,我没有找到这个方法 如果不是持续性的,会很烦人&会有很多流量吗 任何帮助都会很好 所以我想出了一个解决方案: 在XMPPRoster.m xmppStreamDidDis

我从xmppframeworkforios下载了SampleProject,并将其连接到我的Jabber服务器。一切都好

但是我想让我的好友留在好友概览中,即使我已断开连接(连接丢失)。可能吗?据我所知,XMPPCoreStorage将它们保存在CoreData中。为什么要在断开连接时进行清洁?是否可以在断开时禁用清洁?很遗憾,我没有找到这个方法

如果不是持续性的,会很烦人&会有很多流量吗


任何帮助都会很好

所以我想出了一个解决方案:

在XMPPRoster.m xmppStreamDidDisconnect上:

我注释了4行。现在看起来是这样的:

- (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error
{
    // This method is invoked on the moduleQueue.

    XMPPLogTrace();

//  [xmppRosterStorage clearAllUsersAndResourcesForXMPPStream:xmppStream];
//  
//  [self _setRequestedRoster:NO];
//  [self _setHasRoster:NO];
//  
//  [earlyPresenceElements removeAllObjects];
}

因此,它不会清除断开连接时的存储。在重新连接时,它将清理存储并用更新的信息重新填充存储。希望它能帮助其他人。这不是一个完美的解决方案。首选的方法是构建您自己的CoreData模型,并在其中获取XMPP内容。

因此我提出了一个解决方案:

在XMPPRoster.m xmppStreamDidDisconnect上:

我注释了4行。现在看起来是这样的:

- (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error
{
    // This method is invoked on the moduleQueue.

    XMPPLogTrace();

//  [xmppRosterStorage clearAllUsersAndResourcesForXMPPStream:xmppStream];
//  
//  [self _setRequestedRoster:NO];
//  [self _setHasRoster:NO];
//  
//  [earlyPresenceElements removeAllObjects];
}

因此,它不会清除断开连接时的存储。在重新连接时,它将清理存储并用更新的信息重新填充存储。希望它能帮助其他人。这不是一个完美的解决方案。首选的方法是构建您自己的CoreData模型并在其中获取XMPP内容。

在新版本中有:xmppRoster.autoClearAllUsersAndResources=NO;新版本中有:xmppRoster.autoClearAllUsersAndResources=NO;