2016-01-20 6 views
2

Я создаю приложение Objective-C, которое использует функцию AirDrop, включенную в iOS. Файл, который я пытаюсь отправить, является файлом .plist, по какой-то причине технически считается специальным типом файла. При получении файла .plist с моего Mac все идет отлично, но когда я пытаюсь отправить, AirDrop выходит из строя немедленно, и я смог получить сообщение об ошибке, которое будет отображаться в отладчике.Отправка пользовательских типов файлов через AirDrop

Он говорит:

AirDrop: Invalid URL (no scheme) /var/mobile/Containers/Data/Application/AB771F7E-AFDB-4CB4-8D60-E1B62BAB8A62/Documents/Chicken.plist 

И позже:

Sender kSFOperationEventErrorOccured { Error = "Error Domain=SFOperation Code=-4 \"The transfer failed because there were no valid files to send.\" 

Наконец, NSLocalizedDescription ошибка говорит:

UserInfo={NSLocalizedDescription=The transfer failed because there were no valid files to send.} 

Я не знаю, почему он не находит файл , поскольку я использую аналогичный код во всем приложении для извлечения файлов из этого каталога, и все работает нормально. Вот код в методе IBAction, который вызывается, когда пользователь нажимает кнопку Отправить:

recipeName = [[NSUserDefaults standardUserDefaults] 
         stringForKey:@"recipeName"]; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *appFolderPath = [paths objectAtIndex:0]; 
NSString *plistName = [recipeName stringByAppendingString:@".plist"]; //add ".plist" to the end of the recipe name 
NSString *fileName = [appFolderPath stringByAppendingPathComponent:plistName]; //find plist 


NSURL *url = [NSURL URLWithString:fileName]; 
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:nil]; 

// Exclude all activities except AirDrop. 
NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook, 
           UIActivityTypePostToWeibo, 
           UIActivityTypeMessage, UIActivityTypeMail, 
           UIActivityTypePrint, UIActivityTypeCopyToPasteboard, 
           UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, 
           UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, 
           UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo]; 
controller.excludedActivityTypes = excludedActivities; 

// Present the controller 
[self presentViewController:controller animated:YES completion:nil]; 

Заранее спасибо

ответ

7

вам нужен fileURL. Попробуйте изменить этот

NSURL *url = [NSURL URLWithString:fileName]; 

в

NSURL *url = [NSURL fileURLWithPath:fileName]; 
Смежные вопросы