2011-02-02 19 views
26

Sigo recibiendo este error. Estoy cargando a través de ftp a un servidor. Funciona bien y se carga completamente mientras se ejecuta en el simulador, pero cuando lo aprovisiono en mi iPhone, dice: Error Occurred. Upload failed: The operation couldn’t be completed. (Cocoa error 260.)Error de cacao 260

¿Alguna sugerencia? He estado depurando e investigando durante horas y horas y no puedo resolver esto. Intenté limpiar los objetivos, restablecer el dispositivo y restablecer xcode.

Una cosa que era reducido:

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

En el attributesError dispositivo es cierto, en el simulador es falso

+0

Pensé que la documentación de Apple en algún lugar indica que no es un buen hábito para verificar el valor del error. En su lugar, debe comprobar si 'fileAttributes' es nulo. – v1Axvw

Respuesta

52

He intentado objetivos de limpieza, dispositivo de reposición, al restablecer Xcode.

El golpeteo ciego en objetivos aleatorios nunca es una buena técnica de depuración. En el mejor de los casos, solucionará el problema y no sabrá cómo hacerlo. En el peor, romperás algo más.

En su lugar, averigüe cuál es el problema. Para un "error Cocoa", querrá buscar en FoundationErrors.hy CoreDataErrors.h (y AppKitErrors.h cuando no esté dirigido a Cocoa Touch). El archivo anterior da el nombre de error de cacao 260:

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

no es capaz de obtener los atributos de archivo que ya no existe (en el dispositivo).

Es posible que desee editar su pregunta para incluir el código que crea la ruta que almacena en self.filePath.

+0

Hizo exactamente lo que dijo: dio la respuesta y dijo cómo resolver otros nosotros mismos. :-p (Por cierto, sabía que tenía que buscar de esa manera, pero no lo pensé en ese momento. Pensé que Google era mucho más rápido, y lo es). ¡Gracias! –

+0

¡Gracias por su amable moral! "En el mejor de los casos, solucionarás el problema y no sabrás cómo hacerlo. En el peor de los casos, romperás algo más". Gracias de verdad. –

+0

@Peter Hosey ¡Muy bien explicado! Muy buena orientación! – Developer

5

Sé que Peter Hosey ya ha resuelto esta pregunta, pero quiero agregar algo. Si usted quiere encontrar su error rápidamente, puede utilizar un simple comando en el terminal para localizar su definición:

ief2s-iMac:Frameworks ief2$ cd /System/Library/Frameworks 
ief2s-iMac:Frameworks ief2$ grep '260' $(find . -name "*Errors.h") 
  • cd a su directorio de marcos
  • grep todos los archivos que terminan en 'Errors.h 'para el código de error:

Cambie el' 260 'con el código de error que desee. El comando anterior devuelve lo siguiente:

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$ 

Se podría, por supuesto, mejor especificarlo al hacer un grep de 'Error = 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$ 

espero que esto le puede ayudar con su desarrollo posterior, ief2

+2

Debe usar '-w' para buscar 260 como una" palabra completa ", no como una subcadena de otra cosa. No desea coincidencias para 2600, 1260, 260.35, etc. También prefiero usar -F (cadena fija) cuando no deseo específicamente buscar una expresión regular. Finalmente, si usa zsh, puede hacer la búsqueda en una línea: 'grep -RFw 260/System/Library/Frameworks/**/* Errors.h' –

+0

¡Buenos consejos! No soy realmente un usuario grep pesado, pero esos consejos son bastante útiles. Especialmente la bandera '-w'. Estaba intentando usar el carácter especial '\ W' de la sintaxis de Perl, pero eso no funcionaba. Y desafortunadamente estoy usando bash, entonces un comando 'find' me pareció la mejor opción. – v1Axvw

+0

Por alguna razón, sigo odiando usar el terminal o cualquier otro shell de UNIX. :-p Simplemente no puedo trabajar con eso. Entonces, mi ruta alternativa fue abrir ese archivo de encabezado y buscar. –

0

Este error puede eliminarse rápidamente. No arrastre y suelte el archivo de la base de datos en el proyecto. Vaya a la opción "Agregar archivos" y luego importe el archivo. Probé esto y se había ido de error ..

7

enter image description here

Esta solución resuelve mi problema espero que le ayuda a cabo.

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

}

- (void) 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]); 
    } 
} 

}

Nota: Error 260: es decir, el archivo no se puede encontrar en el camino que ha especificado (una vez más, crea DB y luego agrega tu proyecto).

1

En mi caso, mi error 260 se debió a una carpeta en la ruta Ser camelCase.

En el simulador funcionó bien bajo OSX. Sin embargo, en un dispositivo iOS el caso se volvió muy importante.

I.E. que se refería a una carpeta llamada `` @ "/ data/veintitantos /" `` ` En el disco que esto era/data/veintitantos/

Tienes que mantener una consistencia de mayúsculas/minúsculas para iOS. Así que tuve que asegurarme de que siempre se conocía como/data/algo/