Xcode 6 continue de renommer le directory de mon application dans le simulateur iOS8 après chaque exécution.

Je cours Xcode 6 Beta 5 mais cela s'est passé depuis la première version bêta. Le directory de mon application dans le simulateur continue d'être renommé après chaque exécution. Cela m'a pris du time pour comprendre cela. J'utilise ceci pour get la reference de dir du doc.

NSSsortingng *folder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSLog(@"Documents Dir: %@",folder); 

Maintenant, par exemple sur la première manche ce sera:

/ Utilisateurs / Joey / Bibliothèque / Développeur / CoreSimulator / Périphériques / 5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE / data / Conteneurs / Données / Application / 4B10C2E4-A5C3-4C64-93B1-4069FCCB9C46 / Documents

Deuxième course maintenant c'est:

/ Utilisateurs / Joey / Bibliothèque / Développeur / CoreSimulator / Périphériques / 5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE / data / Conteneurs / Données / Application / 7E9EB62D-115A-4092-AD23-CB6BA3E5E10F / Documents

Troisième course:

/ Utilisateurs / Joey / Bibliothèque / Développeur / CoreSimulator / Périphériques / 5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE / data / Conteneurs / Données / Application / EC8F41E8-52ED-4B10-9808-B3ACC46FC6AA / Documents

Cela fait des ravages avec mon application, car il stocke les references de path pour certains files dans l'application. Ce n'est pas que ma déclaration NSLog renvoie des résultats incorrects, j'ai vérifié que c'est ce qui se passe dans Finder. Ça change le nom à chaque fois. Quelqu'un a-t-il vu cela arriver? Est-ce une "caractéristique" que je suis malentendu?

Il s'avère que Xcode 6 change en fait l'UUID de l'application à chaque exécution, et j'ai tort de stocker les paths absolus.

UTILISER LES SIMPLICATEURS

J'ai utilisé cette application sur Xcode 5 ouvre le dossier Documents, pour l'application en cours d'exécution dans le simulateur, dans le Finder.

http://simpholders.com/

pas encore prêt pour Xcode 6 (à partir du 24 septembre 2014) mais sauve tous ces tracas.

Dans Xcode 6 / iOS8 Le bundle est maintenant séparé des données. / Le GUID de l'application est régénéré entre les exécutions dans Xcode (je ne sais pas pourquoi)

  DOCUMENTS DIR:/Users/gbxc/Library/Developer/CoreSimulator/Devices/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Data/Application/C220D351-0BE7-46BA-B35E-D16646C61A3F/Documents mainBundlePath_:/Users/gbxc/Library/Developer/CoreSimulator/Devices/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Bundle/Application/12200D1D-9B67-408B-BCF7-38206CBE0940/myappname.app/BLANK_BLOG_SCALED.jpg 

1. TROUVEZ LE DOSSIER DES APPAREILS dans le SIMULATEUR

 /Users/gbxc/Library/Developer/CoreSimulator/Devices/ 

ouvrir chaque /device.plist pour voir quel GUID est quel périphérique dans XCode – Je pense que c'est statique

3. TROUVEZ L'APPAREIL que vous utilisez sur l'iPad 2 – Je pense que c'est statique

 /Devices/AC79941F-EC56-495E-A077-773EEE882732 

4. Trouvez votre dossier Application / Documents

 /AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Data/Application/C220D351-0BE7-46BA-B35E-D16646C61A3F/Documents 

ATTENTION le GUID C220D351-0BE7-46BA-B35E-D16646C61A3F est régénéré chaque fois que l'application est exécutée dans XCode 6

  NSArray *paths_ = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); if(paths_){ _docsDir = [paths_ firstObject]; DebugLog(@"DOCUMENTS DIR:%@",_docsDir); }else{ ErrorLog(@"paths_ is nil - cant get Documents directory"); } 

Chemin principal BUNDLE

 NSSsortingng *mainBundlePath_ = [[NSBundle mainBundle] pathForResource:@"someimageinyourbundle" ofType:@"jpg"]; /AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Bundle/Application/12200D1D-9B67-408B-BCF7-38206CBE0940/clarksonsiq.app/BLANK_BLOG_SCALED.jpg 

NE JAMAIS CACHE LE CHEMIN vers / Documents entre les courses il va changer.

Je l'ai sérialisé à un plist et ne pouvais pas comprendre pourquoi ils ont continué à disparaître

Le GUID ci-dessus / Documents ne cesse de changer entre les exécutions, mais si vous avez / Documents ouvert dans le Finder, le dossier rest ouvert.

 https://devforums.apple.com/thread/235911?tstart=0 https://devforums.apple.com/thread/238754?tstart=0 

Solution gratuite

Utilisez Open Source Library OpenSim . OpenSim est une alternative open source pour SimPholders, écrite en Swift.

Solution payée

Utilisez l'application SimPholder pour connaître l'location actuel de l'application.

entrez la description de l'image ici

Pour xcode 6.0>

Télécharger SimPholder 2.0 alpha 2


Pour xcode 5.1 <

Télécharger SimPholders 1.5

Je peux confirmer que c'est Xcode 6 lié pas iOS 8.

J'ai deux machines de développement. Sur l'un d'entre eux, j'ai Xcode 5. Je travaillais tout le time sur cette machine et mes URL étaient bien (photo app, les photos sont visibles).

Hier j'ai vérifié sous forme git ma source sur une machine avec Xcode 6. J'ai remarqué que mes photos ne sont plus visibles, seules les photos qui sont créées lors de cette session d'application.

Après un petit debugging, j'ai réalisé que le file: /// var / mobile / Applications / B6A6BAEF-C90C-4A2A-93DB-E6700B88971F / Documents / est en train de changer à chaque exécution de l'application.

Pendant tout ce time, je travaille avec iOS 7.

Je vais vérifier une fois de plus sur une machine avec Xcode 5 pour confirmer quand j'aurai mis la main dessus.

Vous devez save uniquement le path dans DocumentDirectory (directory / nom de file) et l'append à DocumentDirectory chaque fois que vous chargez le file …

 -(void)saveImage:(UIImage *)image{ NSData *pngData = UIImagePNGRepresentation(image); NSSsortingng *pathInDocumentDirectory = [APP_DocumentDirectory ssortingngByAppendingPathComponent:PROFILE_IMAGE_NAME]; NSSsortingng *filePath = [self documentsPathForFileName:pathInDocumentDirectory]; //Save pic file path - DirName/Filename.png [XYZPreferencesHelper setUserImageFilePath:pathInDocumentDirectory]; //Write the file [[NSFileManager defaultManager] createFileAtPath:filePath contents:pngData atsortingbutes:nil]; } -(void)loadSavedUserPicture{ //Load saved DirName/Filename.png NSSsortingng *pathInDocumentDirectory = [XYZPreferencesHelper getUserImageFilePath]; if (pathInDocumentDirectory != nil){ //Full path with new app Document Directory NSSsortingng *filePath = [self documentsPathForFileName:pathInDocumentDirectory]; if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]){ NSData *pngData = [NSData dataWithContentsOfFile:filePath]; UIImage *image = [UIImage imageWithData:pngData]; if (image != nil){ userPicImageView.image = image; } } } } - (NSSsortingng *)documentsPathForFileName:(NSSsortingng *)name { NSSsortingng *documentsPath = [self createRestcallDirectoryIfNotExist]; return [documentsPath ssortingngByAppendingPathComponent:name]; } -(NSSsortingng *)createRestcallDirectoryIfNotExist{ NSSsortingng *path; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSSsortingng *documentsPath = [paths objectAtIndex:0]; path = [documentsPath ssortingngByAppendingPathComponent:APP_DocumentDirectory]; NSError *error; if (![[NSFileManager defaultManager] fileExistsAtPath:path]) //Does directory already exist? { if (![[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO atsortingbutes:nil error:&error]) { NSLog(@"Create directory error: %@", error); } } return documentsPath; }