2011-02-02 2 views
26

Я продолжаю получать эту ошибку. Я загружаю через ftp на сервер. Он отлично работает и полностью загружается во время работы в симуляторе, но когда я предоставляю его на своем iPhone, он говорит: Error Occurred. Upload failed: The operation couldn’t be completed. (Cocoa error 260.)Ошибка какао 260

Любые предложения? Я отлаживаю и исследую часами и не могу понять это. Я попытался очистить цели, сбросить устройство, сбросить xcode.

Одна вещь, которую я сузили был:

NSError *attributesError = nil; 
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:self.filePath error:&attributesError]; 
if (attributesError) { 
    [self failWithError:attributesError]; 
    return; 
} 

В attributesError устройства верно, то в тренажере ложна

+0

Я думал, что документация Apple где-то гласит, что это нехорошая привычка проверять значение ошибки. Вместо этого вы должны проверить, нет ли параметра fileAttributes. – v1Axvw

ответ

52

Я пытался очистки цели, сброс устройства, сброс Xcode.

Слепой удар по случайным целям никогда не является хорошей техникой отладки. В лучшем случае вы устраните проблему и не знаете, как это сделать. В худшем случае вы сломаете что-то еще.

Вместо этого узнайте какая проблема. Для «ошибки Cocoa» вы захотите посмотреть в FoundationErrors.h и CoreDataErrors.h (и AppKitErrors.h, если не нацелитесь на Cocoa Touch). Прежний файл дает имя Cocoa ошибки 260:

NSFileReadNoSuchFileError = 260,      // Read error (no such file) 

вы не можете получить атрибуты этого файла, потому что он не существует (на устройстве).

Возможно, вы захотите изменить свой вопрос, включив код, который создает путь, который вы храните в self.filePath.

+0

Вы сделали именно то, что сказали: вы дали ответ и сказали, как решать другие. : -p (Кстати, я знал, что мне нужно искать этот путь, но я не думал об этом в данный момент. Я думал, что Googling был намного быстрее - и это так.) Спасибо! –

+0

Спасибо за твою приятную мораль! «В лучшем случае вы исправите проблему и не знаете, как это сделать. В худшем случае вы сломаете что-то еще». Спасибо, действительно. –

+0

@Peter Hosey Очень хорошо объяснено! Очень хорошее руководство! – Developer

5

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

ief2s-iMac:Frameworks ief2$ cd /System/Library/Frameworks 
ief2s-iMac:Frameworks ief2$ grep '260' $(find . -name "*Errors.h") 
  • CD в каталог рамок
  • GREP все файлы, оканчивающиеся «Errors.h 'для кода ошибки:

Измените «260» на код ошибки, который вы хотите. Приведенная выше команда возвращает следующее:

ief2s-iMac:Frameworks ief2$ grep '260' $(find . -name "*Errors.h") 
./CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h: midiDupIDErr     = -260, /*duplicate client ID*/ 
./CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h: kECONNREFUSEDErr    = -3260, /* Connection refused   */ 
./Foundation.framework/Versions/C/Headers/FoundationErrors.h: NSFileReadNoSuchFileError = 260,      // Read error (no such file) 
ief2s-iMac:Frameworks ief2$ 

Вы могли бы, конечно, лучше определить его, выполнив Grep на «Ошибка = 260»:

ief2s-iMac:Frameworks ief2$ grep 'Error = 260' `find . -name "*Errors.h"` 
./Foundation.framework/Versions/C/Headers/FoundationErrors.h: NSFileReadNoSuchFileError = 260,      // Read error (no such file) 
ief2s-iMac:Frameworks ief2$ 

Я надеюсь, что это может помочь вам с дальнейшим развитием, ief2

+2

Вы должны использовать '-w', чтобы искать 260 как« целое слово », а не подстроку чего-то другого. Вы не хотите совпадений для 2600, 1260, 260.35 и т. Д. Я также предпочитаю использовать -F (фиксированная строка), когда я специально не хочу искать регулярное выражение. Наконец, если вы используете zsh, вы можете выполнить поиск в одной строке: 'grep -RFw 260/System/Library/Frameworks/**/* Errors.h' –

+0

Хорошие советы! Я не очень сильный пользователь grep, но эти советы швы весьма полезны. Особенно флаг '-w'. Я пытался использовать специальный символ '\ W' из синтаксиса perl, но это не сработало. И, к сожалению, я использую bash, поэтому команда 'find' сгладила лучший вариант для меня. – v1Axvw

+0

По какой-то причине я продолжаю ненавидеть использование терминала или любой другой оболочки UNIX. : -p Я просто не могу с этим работать. Таким образом, мой альтернативный маршрут состоял в том, чтобы фактически открыть этот заголовочный файл и выполнить поиск. –

0

Эта ошибка может быть удалена vey быстро. Не перетаскивайте файл базы данных в проект. Перейдите в «Добавить файлы», а затем импортируйте файл. Я попробовал это, и исчезла ошибка ..

7

enter image description here

Это решение решает мою проблему я надеюсь, что это будет поможет вам.

1
+(DataManager*)getSharedInstance{ 
if (!sharedInstance) { 
    sharedInstance = [[super allocWithZone:NULL]init]; 
    [sharedInstance copyDatabaseIntoDocumentsDirectory]; 
} 
return sharedInstance; 

}

- (Недействительными) copyDatabaseIntoDocumentsDirectory {

// Set the documents directory path to the documentsDirectory property. 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
self.documentsDirectory = [paths objectAtIndex:0]; 

// Keep the database filename. 
self.databaseFilename = DATABASE_FILENAME; 

// Check if the database file exists in the documents directory. 
destinationPath = [self.documentsDirectory stringByAppendingPathComponent:self.databaseFilename]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:destinationPath]) { 
    // The database file does not exist in the documents directory, so copy it from the main bundle now. 
    NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseFilename]; 
    NSError *error; 
    [[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:destinationPath error:&error]; 

    // Check if any error occurred during copying and display it. 
    if (error != nil) { 
     NSLog(@"%@", [error localizedDescription]); 
    } 
} 

}

Примечание: Ошибка 260: значит, что файл не может быть найден на пути вы указали (еще раз создать БД, а затем добавить свой проект).

1

В моем случае моя ошибка 260 была связана с папкой на пути Быть camelCase.

В симуляторе он отлично работал под OSX. Однако на устройстве iOS корпус стал очень важным.

I.E. я ссылается на папку с именем `` @ «/ данные/нечто /» `` ` На диске это было/данные/нечто/

Вы должны поддерживать согласованность Заглавные/строчные буквы для прошивкой. Так что я должен был убедиться, что это всегда упоминалось как/data/somethings/