writeToFile lavoro sul simulatore, ma non sul dispositivo
-
18-09-2019 - |
Domanda
Ho un plist che sto cambiando:
NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];
NSMutableDictionary *keyFrameFileByMovie = [[NSMutableDictionary alloc] initWithContentsOfFile:finalPath];
[keyFrameFileByMovie setValue:keyFrameName forKey:movieName];
BOOL isOk = [keyFrameFileByMovie writeToFile:finalPath atomically:YES];
Al Isok simulatore è 1 sul dispositivo Isok è 0
Non credo che si tratta di un problema di sensative caso, perché ho un codice di ottenere che funziona:
NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];<br>
NSDictionary *plistData =[[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
Perché non writeToFile fallire su dispositivo?
Soluzione
applicazione per iPhone ha molto severa struttura di directory. Purtroppo i permessi sul dispositivo vs simulatore sono spettacolo diverso. Quindi l'unico problema qui può essere che non si sta salvando nella directory Documenti, ma nel dir MainBundle.
Nel precedente esempio, qual è il valore di percorso?
Altri suggerimenti
Qual è il percorso che stai originariamente a cominciare? Ricordate, l'iPhone è case-sensitive, ma il Mac è (di solito) non è, in modo che possa essere inciampare in su. Vorrei accedere finalPath al log in entrambi i casi, e visivamente verificare che siano la stessa cosa.
Aggiungi "/", mentre aggiungendo la stringa
NSString *finalPath = [path stringByAppendingPathComponent:@"/KeyFrameFileByMovie.plist"];
NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"default.txt"];
NSString *stringFilepath = [docPath stringByAppendingPathComponent:@"configlocaljson.json"];[replacedString writeToFile:stringFilepath atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSError * error = nil;
BOOL success = [replacedString writeToFile:stringFilepath atomically:YES encoding:NSUTF8StringEncoding error:&error];
NSLog(@"Success = %d, error = %@", success, error);
Il suo lavoro per me.