【问题标题】:How can I send a array by WiFi/Bluetooth?如何通过 WiFi/蓝牙发送阵列?
【发布时间】: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]; }
  • 您可以编辑您的问题以添加更多信息、代码。我在问题中添加了上面的注释代码。

标签: ios arrays bluetooth wifi multipeer-connectivity


【解决方案1】:

您可以使用 dataWithJSONObject:options:error:NSArray 序列化为 JSON 数据
发送数据
使用JSONObjectWithData:options:error: 恢复到NSArray

这是假设NSArray的所有组件都支持JSON序列化。

对于具有更复杂对象的数组,请使用 NSArchiver 并向尚未实现该协议的任何对象添加对 NSCoding 的支持。

MPMediaItem 符合 NSCoding,因此您可以使用 NSArchiverJSON 进行序列化。

【讨论】:

  • MPMediaItemNSCoding 一致,因此您可以使用 NSArchiver 但 JSON 进行序列化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
相关资源
最近更新 更多