gpt4 book ai didi

objective-c - 通过多点连接在设备之间传递任何数据类型

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:11 25 4
gpt4 key购买 nike

我正在尝试将多点连接框架实现到我的应用程序中。

我已经成功做到了。我希望用户能够做的是从相机胶卷中选择图片之类的东西,然后将其传递到另一个连接的设备。不过,我正在用其他东西来做,而不仅仅是 UIImage,(例如 NSString、NSObject...)

理想情况下,我希望能够使用它并使用以下两种方法之一接收它:

- (void)session:(MCSession *)session didReceiveStream:(NSInputStream *)stream withName:(NSString *)streamName fromPeer:(MCPeerID *)peerID;

- (void)session:(MCSession *)session didReceiveData:(NSData *)data fromPeer:(MCPeerID *)peerID {

然而,我想要的是一种标准化的方式(适用于任何对象类型)使用多点连接将其传递到另一台设备。

我唯一的想法是将每个对象转换成NSData然后传递过来,但是,这在接收端不起作用。我的测试是:

NSData *myData = [NSKeyedArchiver archivedDataWithRootObject:self.myImage];
NSLog(@"%@", myData);

然后我不知道如何将它转换回来。这与 NSCoding 有关吗?任何想法将不胜感激! :) 谢谢!!

最佳答案

听起来你的想法是对的,你只需要在接收到数据时使用 NSKeyedUnarchiver 即可。

- (void)session:(MCSession *)session didReceiveData:(NSData *)data fromPeer:(MCPeerID *)peerID {

id myObject = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}

从那里您可以确定您实际收到的对象类型:

if ([myObject isKindOfClass:[SomeClass class]]){

//Handle
}

这适用于任何类,只要它符合 NSCoding 协议(protocol)。看看:Encoding and Decoding Objects

关于objective-c - 通过多点连接在设备之间传递任何数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19590688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com