如何通过WiFi /蓝牙发送阵列?

时间:2014-06-23 18:14:09

标签: ios arrays bluetooth wifi multipeer-connectivity

我使用Multipeer Connectivity Framework

正确发送文本,但我可以发送其他数据

- 发送文字:

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];
}

type array

MPMediaQuery * todo = [[alloc MPMediaQuery] init]; 

NSLog(@“elementos de registro de unaconsultagenérica...”); NSArray * itemsFromGenericQuery = [Elementos de muebles]; for(MPMediaItem *canciónenitemsFromGenericQuery) {NSString * songtitle = [cancióvalueForProperty:MPMediaItemPropertyTitle]; NSString * artista = [cancióvalueForProperty:MPMediaItemPropertyArtist]; largo totalPlaybackTime = [[cancióvalueForProperty:MPMediaItemPropertyPlaybackDuration] longValue]; [ArraySongs addObject:song]; }

1 个答案:

答案 0 :(得分:0)

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

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

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

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