如何使用MultipeerConnectivity传输数据?

时间:2015-10-11 01:24:42

标签: ios swift archive multipeer-connectivity mpmediaitem

我正在尝试使用MultipeerConnectivity将MPMediaItem数组传输到另一台设备,因此我可以显示歌曲列表(TableView),从而远程控制对等体。

这段代码对我的音乐库项目进行编码,以便我可以将它们发送给另一个同行。

func encodeLibrary(lib: [MPMediaItem]) -> NSData {
    print("before encoding: \(lib.count)")
    // --> prints "before encoding: 511"

    let data = NSMutableData()

    let archiver = NSKeyedArchiver.init(forWritingWithMutableData: data)
    archiver.encodeObject(lib, forKey: "data")
    archiver.finishEncoding()

    let unarchiver = NSKeyedUnarchiver.init(forReadingWithData: data)
    let newLib = unarchiver.decodeObjectForKey("data") as! [MPMediaItem]

    print("decoded: \(newLib.count)")
    // --> prints "decoded: 511"

    return data
}

然后在另一个对等体上执行以下代码:

func decodeLibrary(data: NSData) -> [MPMediaItem] {

    let unarchiver = NSKeyedUnarchiver.init(forReadingWithData: data)
    let lib = unarchiver.decodeObjectForKey("data") as! [MPMediaItem]

    print("items: \(lib.count)")
    //prints "items: 0"

    return lib
}

要发送数据,请使用以下调用:

try! session.sendData(data, toPeers: [peerID], withMode: .Reliable)

这不是en / /解码的问题,因为当你在编码后立即在同一设备上运行解码时它就可以工作了。它前后打印511首歌曲。 在传播时或者我无法想到的任何问题都必须存在问题。 当数据到达另一台设备时,除了这些MPMediaItem之外的所有内容都可用。

我没有收到任何错误,其他部分的通讯工作正常。这个阵列似乎在其他设备上不可用。知道如何解决这个问题吗?

提前致谢, KlixxOne

编辑:实际上阵列在那里,但它没有内容(它在其他设备上有(511个条目))。

0 个答案:

没有答案