如何通过 WiFi/蓝牙发送阵列?
Posted
技术标签:
【中文标题】如何通过 WiFi/蓝牙发送阵列?【英文标题】:How can I send a array by WiFi/Bluetooth? 【发布时间】:2014-06-23 18:14:09 【问题描述】:我使用多点连接框架
正确发送文本,但我可以发送其他数据
-发送文本:
NSData *dataToSend = [_txtMessage.text dataUsingEncoding:NSUTF8StringEncoding];
NSArray *allPeers = _appDelegate.mcManager.session.connectedPeers;
NSError *error;
[_appDelegate.mcManager.session sendData:dataToSend
toPeers:allPeers
withMode:MCSessionSendDataReliable
error:&error];
if (error)
NSLog(@"%@", [error localizedDescription]);
[_txtMessage setText:@""];
[_txtMessage resignFirstResponder];
-接收文本:
-(void)didReceiveDataWithNotification:(NSNotification *)notification
MCPeerID *peerID = [[notification userInfo] objectForKey:@"peerID"];
NSString *peerDisplayName = peerID.displayName;
NSData *receivedData = [[notification userInfo] objectForKey:@"data"];
NSString *receivedText = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
NSMutableArray *arraySongs;
但是如何发送和接收数组呢?
对不起我的英语不好
从注释中添加格式和连续性:
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSLog(@"Logging items from a generic query...");
NSArray *itemsFromGenericQuery = [everything items];
for (MPMediaItem *song in itemsFromGenericQuery)
NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
NSString *artist = [song valueForProperty:MPMediaItemPropertyArtist];
long totalPlaybackTime = [[song valueForProperty: MPMediaItemPropertyPlaybackDuration] longValue];
[arraySongs addObject:song];
类型数组
MPMediaQuery * todo = [[alloc MPMediaQuery] init];
NSLog(@"elementos de registro de una consulta genérica ..."); NSArray * itemsFromGenericQuery = [Elementos de muebles]; for (MPMediaItem * canción en itemsFromGenericQuery) NSString * songtitle = [canción valueForProperty: MPMediaItemPropertyTitle]; NSString * 艺术家 = [canción valueForProperty: MPMediaItemPropertyArtist]; 大的 totalPlaybackTime = [[canción valueForProperty: MPMediaItemPropertyPlaybackDuration] longValue]; [ArraySongs addObject: 歌曲];
【问题讨论】:
NSArray
包含哪些对象?
MPMediaQuery *everything = [[MPMediaQuery alloc] init]; NSLog(@"从通用查询中记录项目..."); NSArray *itemsFromGenericQuery = [所有项目]; for (MPMediaItem *song in itemsFromGenericQuery) NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle]; NSString *artist = [歌曲 valueForProperty:MPMediaItemPropertyArtist]; long totalPlaybackTime = [[歌曲 valueForProperty: MPMediaItemPropertyPlaybackDuration] longValue]; [arraySongs addObject:song];
您可以编辑您的问题以添加更多信息、代码。我在问题中添加了上面的注释代码。
【参考方案1】:
您可以使用 dataWithJSONObject:options:error:
将 NSArray
序列化为 JSON 数据
发送数据
使用JSONObjectWithData:options:error:
恢复到NSArray
。
这是假设NSArray
的所有组件都支持JSON序列化。
对于具有更复杂对象的数组,请使用 NSArchiver
并向尚未实现该协议的任何对象添加对 NSCoding
的支持。
MPMediaItem
符合 NSCoding,因此您可以使用 NSArchiver
但 JSON
进行序列化。
【讨论】:
MPMediaItem
与 NSCoding
一致,因此您可以使用 NSArchiver
但 JSON 进行序列化。以上是关于如何通过 WiFi/蓝牙发送阵列?的主要内容,如果未能解决你的问题,请参考以下文章