- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张图像,我需要通过蓝牙将其发送到另一台设备。数据是这样的:
NSData *Recording = [NSData dataWithContentsOfFile:myFilePath];
NSString* str = [NSString stringWithFormat:@"%@.ext", button.titleLabel.text];
myDictionary = [[NSMutableDictionary alloc] init];
[myDictionary setObject:str forKey:@"fileName"];
[myDictionary setObject:@"Recording" forKey:@"fileType"];
[myDictionary setObject:Recording forKey:@"FileData"];
NSData* myData = [NSKeyedArchiver archivedDataWithRootObject:myDictionary];
我需要使用以下方法发送 myData 或 myDictionary:
progress = [session sendResourceAtURL:anUrl withName:[imageUrl lastPathComponent] toPeer:peerID withCompletionHandler:^(NSError *error) {
// Implement this block to know when the sending resource transfer completes and if there is an error.
if (error) {
NSLog(@"Send resource to peer [%@] completed with Error [%@]", peerID.displayName, error);
}
else {
// Create an image transcript for this received image resource
}
}];
正如你所看到的,我必须在 url 发送一个资源,接收者将收到“在 url”的资源,并且我必须从该 url 获取一个 NSMutabledictionary。基本上我必须发送这个 myDictionary 但我无法弄清楚 url 是如何工作的。谁能解释一下我必须使用什么网址以及如何创建它?
最佳答案
我不确定我是否明白你想要什么,但看起来你只是被困在传送点了。
由于您已经将所有内容转换为 NSData 对象,因此在发送方您需要调用如下内容:
// Assume peerID is correct and data has been prepared
NSError *error;
if ( ![session sendData:data
toPeers:@[peerID]
withMode:MCSessionSendDataReliable
error:&error] )
NSLog(@"ERROR - Unable to queue message for delivery - %@",[error localizedDescription]);
在接收方,无论谁是 MCSessionDelegate,都将通过以下方式调用:
- (void)session:(MCSession *)session
didReceiveData:(NSData *)data
fromPeer:(MCPeerID *)peerID;
您可能会“取消归档” NSData 对象以对其执行某些操作。
让我也添加一个观察结果......
从您的示例来看,您似乎正在将文件的全部内容填充到然后存档和发送的字典中。这可能是可行的,但不建议这样做。
更好的方法是将文件作为单独的资源发送。例如,查看发件人的此示例:
// Assume peerID and filePath are both valid and correct
NSURL *fileURL = [NSURL URLWithString:filePath];
NSString *fileName = [fileURL lastPathComponent];
NSError *error;
[session sendResourceAtURL:resourceURL
withName:fileName
toPeer:peerID
withCompletionHandler:^(NSError *error) {
if (error)
NSLog(@"Sending to [%@] failed: %@",peerID.displayName, error);
}];
接收者的 MCSessionDelegate 将在传输开始时接收到这两个内容:
- (void)session:(MCSession *)session
didStartReceivingResourceWithName:(NSString *)resourceName
fromPeer:(MCPeerID *)peerID
withProgress:(NSProgress *)progress;
...传输结束时:
- (void)session:(MCSession *)session
didFinishReceivingResourceWithName:(NSString *)resourceName
fromPeer:(MCPeerID *)peerID
atURL:(NSURL *)temporaryURL
withError:(NSError *)error;
关于ios - sendResourceAtURL 多端 IOS7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19623044/
我有一张图像,我需要通过蓝牙将其发送到另一台设备。数据是这样的: NSData *Recording = [NSData dataWithContentsOfFile:myFilePath]; NSS
我正在尝试使用 sendResourceAtURL 发送我通过 imagePickerController 选择的图像。我在方法 didFinishPickingMediaWithInfo 中得到 U
我是一名优秀的程序员,十分优秀!