Ios 无法添加具有父级的子级;先拆离或复制
我有一个聊天应用程序,当我阻止对话伙伴时,我使用以下代码为他创建一条固定消息:Ios 无法添加具有父级的子级;先拆离或复制,ios,objective-c,xcode,xmppframework,Ios,Objective C,Xcode,Xmppframework,我有一个聊天应用程序,当我阻止对话伙伴时,我使用以下代码为他创建一条固定消息: NSString *deliveryMessage = [NSString stringWithFormat:@"{ \"sender\":\"%@\", \"senderUserName\":\"%@\", \"groupId\":\"%@\", \"messageType\":\"%@\"}", [USER_DEFAULT valueForKey:WA_USER_ID_KEY], [USER_DEFAULT v
NSString *deliveryMessage = [NSString stringWithFormat:@"{ \"sender\":\"%@\", \"senderUserName\":\"%@\", \"groupId\":\"%@\", \"messageType\":\"%@\"}", [USER_DEFAULT valueForKey:WA_USER_ID_KEY], [USER_DEFAULT valueForKey:WA_USER_NAME_KEY], stringId, @"block"];
NSString *recieverJid = [NSString stringWithFormat:@"%@@%@/%@", stringId ,CHAT_SERVER_ADDRESS,CHAT_SERVER_ADDRESS];
NSString *senderJid = [NSString stringWithFormat:@"%@@%@/%@",MY_USER_NAME,CHAT_SERVER_ADDRESS,CHAT_SERVER_ADDRESS];
NSXMLElement *body = [[NSXMLElement alloc]initWithName:@"body"];
[body setStringValue:deliveryMessage];
NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
[message addAttributeWithName:@"type" stringValue:@"chat"];//@"chat"
[message addAttributeWithName:@"from" stringValue:senderJid];
[message addAttributeWithName:@"to" stringValue:recieverJid];
[message addChild:[body copy]];
[xmppStream sendElement:message];
总是出现错误:无法添加具有父级的子级;先拆离或复制
我使用相同的代码在用户之间发送消息,并用于将来的其他用途。总是有用,但在这里不行
有什么想法吗?谢谢
编辑!!
我的问题是因为接收器被XMPPPrivacy
阻止。所以我不能给他发信息。在我删除隐私后,所有的工作都重新开始
如果有人遇到同样的问题,请检查接收器是否被阻塞
谢谢大家 在我看来,这是一个错误<代码>[消息添加子项:[正文副本]]代码>应该可以避免该错误 也许这个小技巧可以奏效: 创建身体的副本:
NSXMLElement *copy = [body copy];
然后将copy的parent设置为nil,并使用replace[body copy]
替换为copy这对我很有效:
//NSXMLElement *body = [[NSXMLElement alloc]initWithName:@"body"];
NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
[body setStringValue:messageStr];
NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
[message addAttributeWithName:@"type" stringValue:@"chat"];
[message addAttributeWithName:@"to" stringValue:chatWithUser];
[message addChild:body];
[self.xmppStream sendElement:message];
为什么[body copy]
,而不是简单的body
?也不起作用。第一次很简单,但是我以前在网上搜索过,我发现但是没有结果你能解决这个问题吗?是的,我的问题是因为该用户被XMPPPrivacy
阻止了。在我删除隐私后,它又能工作了。因此,请检查您的用户是否被阻止。同样的问题:nsxmlement*copy=[body copy];[消息addChild:copy]代码>