2010-01-06 6 views
3

j'ai un plist que je suis en train de changer:writeToFile travaillant sur simulateur, mais pas sur l'appareil

NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"]; 
NSMutableDictionary *keyFrameFileByMovie = [[NSMutableDictionary alloc] initWithContentsOfFile:finalPath]; 
[keyFrameFileByMovie setValue:keyFrameName forKey:movieName]; 
BOOL isOk = [keyFrameFileByMovie writeToFile:finalPath atomically:YES]; 

Sur le simulateur IsOk est 1 sur l'appareil IsOk est 0

Je ne pense pas il est question d'un cas sensative, parce que je suis un code qui fonctionne obtenir:

NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];<br> 
NSDictionary *plistData =[[NSDictionary dictionaryWithContentsOfFile:finalPath] retain]; 

Pourquoi ne writeToFile échoue sur l'appareil?

Répondre

6

L'application iPhone a une structure de répertoires très stricte. Malheureusement, les autorisations sur l'appareil par rapport au simulateur sont différentes. Le seul problème est que vous ne sauvegardez pas dans le répertoire Documents mais dans le répertoire MainBundle.

Dans l'exemple ci-dessus, quelle est la valeur de chemin?

4

Quel est le chemin que vous commencez à l'origine avec? Rappelez-vous, l'iPhone est sensible à la casse, mais le Mac n'est (habituellement) pas, ce qui pourrait vous faire trébucher. Dans les deux cas, j'inscris finalPath dans le journal et je vérifie visuellement qu'ils sont identiques.

+0

C'est presque assurément le problème. –

+0

Je suis désolé, j'ai travaillé jusqu'à très tard ... l'isOk renvoie 0 sur l'appareil ce qui signifie que c'est un autre problème – iddober

3

Ajouter "/" en ajoutant la chaîne

NSString *finalPath = [path stringByAppendingPathComponent:@"/KeyFrameFileByMovie.plist"]; 
0
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); 

Son travail pour moi.