2016-10-09 1 views
1

После передачи файла из iPhone в Apple, Дозора я получаю ошибкуWCSession didReceive не файл не подвижное «Нет такого файла или каталога»

Ошибка домена = NSPOSIXErrorDomain Code = 2 «Нет такого файла или каталога»

Что делать неправильно? Эти фрагменты кода:

iPhone ViewController

func makeAction() { 
    let url = NSURL.fileURL(withPath: fileArray[0].object(at: 2) as! String) 
    var applicationDict = Dictionary<String, Array<AnyObject>>() 
    applicationDict["fileArray"] = fileArray 
    WCSession.default().transferFile(url, metadata: applicationDict) 
} 

Часы InterfaceController

func session(_ session: WCSession, didReceive file: WCSessionFile) { 
DispatchQueue.main.async(execute: {() -> Void in 
    print("RECEIVED") 
    var applicationDict = Dictionary<String, Array<AnyObject>>() 
    applicationDict = file.metadata as! Dictionary<String, Array<AnyObject>> 
    self.fileArray = applicationDict["fileArray"]! 
    self.fileList = self.fileArray 

    let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) 
    let tempDocsDir = dirPaths[0] as String 
    let docsDir = tempDocsDir.appending("/") 
    let filemgr = FileManager.default 

    do { 
     let fileName = self.fileArray[0].object(at: 1) as! String 
     try filemgr.moveItem(atPath: file.fileURL.path, toPath: docsDir + fileName) 
    } catch let error as NSError { 
     print("Error moving file: \(error.description)") 
    } 
    self.loadTableData() 
}) 
} 

Полное сообщение об ошибке

Ошибка перемещения файла: Ошибка домена = NSCocoaErrorDomain Код = 4 "" 5d1392cd-acac-4b99-abf5-50062e12dc14_95de54df-69b1-43df-bb90-cfac6fed3677.mp3 "не может быть перемещен в" Документы ", потому что либо первый не использует" t существуют, или папка, содержащая последнюю, не существует. " UserInfo = {NSSourceFilePathErrorKey =/Пользователи/pknapp/Библиотека/Разработчик/CoreSimulator/Devices/950FC0DA-C245-4326-8777-80CE765AF655/data/Контейнеры/Данные/PluginKitPlugin/73C0D94F-483C-4426-B052-001E8837D83A/Documents/Inbox /com.apple.watchconnectivity/FCE7E6CB-2452-4E0A-9AFF-F5B3A51A0DE8/Files/0B96CCB0-A2E1-418B-9859-97C22238A5F5/5d1392cd-acac-4b99-abf5-50062e12dc14_95de54df-69b1-43df-bb90-cfac6fed3677.mp3, NSUserStringVariant = ( Move), NSFilePath =/Пользователи/pknapp/Библиотека/Разработчик/CoreSimulator/Devices/950FC0DA-C245-4326-8777-80CE765AF655/data/Контейнеры/Данные/PluginKitPlugin/73C0D94F-483C-4426-B052-001E8837D83A/Документы /Inbox/com.apple.watchconnectivity/FCE7E6CB-2452-4E0A-9AFF-F5B3A51A0DE8/Files/0B96CCB0-A2E1-418B-9859-97C22238A5F5/5d1392cd-acac-4b99-abf5-50062e12dc14_95de54df-69b1-43df-bb90-cfac6fed3677.mp3 , NSDestinationFilePath =/Пользователи/pknapp/Библиотека/Разработчик/CoreSimulator/Devices/950FC0DA-C245-4326-8777-80CE765AF655/data/Conta iners/Data/PluginKitPlugin/73C0D94F-483C-4426-B052-001E8837D83A/Documents/5d1392cd-acac-4b99-abf5-50062e12dc14_95de54df-69b1-43df-bb90-cfac6fed3677.mp3, NSUnderlyingError = 0x7b776110 {Ошибка домена = NSPOSIXErrorDomain Code = 2 «Нет такого файла или каталога»}}

ответ

1

Документация для didReceiveFile примечания:

Файл: Объект, содержащий URL файла и какой-либо дополнительной информации. Если вы хотите сохранить файл, на который ссылается этот параметр, , вы должны перенести его синхронно в новое место во время реализации этого метода. Если вы не перемещаете файл, система удаляет его после возвращения этого метода.

Поэтому перед перемещением файла в папку, к которой у вашего приложения есть доступ, не используйте асинхронный метод.

0

Хорошо, понял. установка этого в асинхронную отправку была неправильной. Без ist -> отлично работает. Пожалуйста, идти вперед, ничего не видеть здесь :)

Смежные вопросы