2015-05-18 1 views
0

Я работаю над приложением iOS, которое общается с другим устройством, синхронизируя данные через Dropbox.Dropbox SDK для iOS работает на симуляторе, а не на самом устройстве

Он работает отлично, когда я запускаю программное обеспечение на симуляторе iPhone на своем Mac (он синхронизирует, загружает, загружает без проблем), но когда я загружаю его на свое фактическое устройство, я получаю ошибки при загрузке/сохранении.

Приложение на симуляторе и iPhone было успешно связано с моей учетной записью Dropbox.

Я довольно невежественен в отношении того, что может быть причиной, потому что для меня это не имеет большого значения, почему это происходит.

Некоторые ошибки при попытке сделать запросы нагрузки:

2015-05-18 23:27:19.385 Home Alone[2218:923269] [ERROR] DBRequest#connectionDidFinishLoading: error moving temp file to desired location: The operation couldn’t be completed. (Cocoa error 516.) 

2015-05-18 23:27:19.387 Home Alone[2218:923269] [WARNING] DropboxSDK: error making request to /1/files/dropbox/Projekt 2 (1)/Program/Units.txt - (516) Error Domain=NSCocoaErrorDomain Code=516 "The operation couldn’t be completed. (Cocoa error 516.)" UserInfo=0x174077700 {path=/Projekt 2 (1)/Program/Units.txt, destinationPath=/private/var/mobile/Containers/Bundle/Application/BCF55F91-BAD1-4E01-B8A9-3C925749121B/Home Alone.app/Units.txt} 

образцы кода, связанного Dropbox в моем приложении:

В AppDelegate.swift:

func ... didFinishLaunchingWithOptions ... { 
    let session = DBSession(appKey: "myAppKey", appSecret: "myAppSecret", root: kDBRootDropbox) 
    DBSession.setSharedSession(session) 
} 

func ... openURL ... { 
if DBSession.sharedSession().handleOpenURL(url) { 
    if DBSession.sharedSession().isLinked() { 
     // Linking was successfull. 
    } 
    return true 
} 
return false 
} 

В ViewControllerCausingErrors.swift :

class ViewControllerCausingErrors: DBRestClientDelegate 

var dbClient = DBRestClient() 

func ... viewDidLoad ... { 
    self.dbClient = DBRestClient(session: DBSession.sharedSession()) 
    self.dbClient.delegate = self 
} 

func ... viewDidAppear ... { 
    if !DBSession.sharedSession().isLinked() { 
     DBSession.sharedSession().linkFromController(self) 
    } 
} 

/* chunk of code i use to download a file, elsewhere in the VC */ 
if let localPath = NSBundle.mainBundle().pathForResource("Units", ofType: "txt") { 
    // Download file from Dropbox to local path. 
    let dropboxPath = Constants.Dropbox.Download.UnitFilePath 
    self.dbClient.loadFile(dropboxPath, intoPath: localPath) 
} 

Любая помощь с благодарностью.

+0

[Сшивка для справки: https://www.dropboxforum.com/ hc/community/public/questions/203816815-Dropbox-SDK-for-iOS-works-on-simulator-not-on-actual-device] – Greg

+0

Вы нашли решение? Не могли бы вы предоставить код? – Fengson

+0

@Fengson Да, я сделал. Если вы хотите узнать, что вызвало проблему и как я ее решил, ознакомьтесь со своим сообщением на форумах Dropbox: [Ссылка] (https://www.dropboxforum.com/hc/communities/public/questions/203816815-Dropbox- SDK-for-iOS-works-on-simulator-not-on-actual-device) – Priebe109

ответ

1

Согласно iOS documentation, код ошибки 516:

NSFileWriteFileExistsError = 516, 

Похоже, что есть файл на прилагаемом localPath на устройстве (так называемый destinationPath в ошибке), но не на тренажере, в результате чего loadFile чтобы не было возможности записать файл из загрузки.

0

Я думаю, что проблема в NSBundle.mainBundle(). PathForResource («Единицы», ofType: «txt»). NSBundle используется в симуляторе, но не на самом устройстве. Просто поместите Units.txt в функции LoadFile

self.dbClient.loadFile (dropboxPath, intoPath: "Units.txt")

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