2010-12-13 27 views
4

J'ai une application d'expédition non localisée qui contient foo.xib dans le répertoire principal du projet. En préparation pour la localisation, je l'ai déplacé vers en.lproj/foo.xib. Maintenant, quand je construis mon application et l'installe sur mon appareil de test, il finit par utiliser le vieux foo.nib qui doit être là avant (le processus d'installation ne doit pas enlever les anciens fichiers dans le paquet de l'application). Supprimer l'application de l'appareil de test et la réinstaller la corrige - mais je ne veux pas que mes clients existants aient à le faire.La mise à niveau de l'application iPhone et le déplacement des xibs/nibs mènent à des ressources obsolètes

Certains d'entre eux proviennent d'appels à la méthode de bundle -initWithNibName: de UIViewController (à laquelle je passe actuellement le nil pour le nibBundle). Je peux probablement créer une instance de NSBundle qui pointe sur le bon répertoire localisé. Les autres sont spécifiés dans Info.plist ou dans la section "NIB Name" du constructeur de l'interface et je ne vois pas comment spécifier un bundle pour ceux-ci.

Il pourrait être plus facile de renommer tous mes xibs en (par exemple) en.lproj/newfoo.xib, alors je présume qu'il va trouver la bonne nib à l'exécution. (Et je dois me rappeler de ne plus jamais utiliser l'ancien nom "foo.xib" dans une nouvelle version.) Y at-il une solution plus intelligente ici? (À part remonter dans le temps et commencer par les répertoires en.lproj depuis le début ;-)

Merci! -Mike

Répondre

4

Répondre à ma propre question au cas où quelqu'un d'autre rencontrerait ce problème. Il semble qu'il s'agisse d'un artefact du cycle de publication-construction de Xcode, et ce n'est pas un problème lors de la mise à niveau de l'utilisateur via l'App Store. Je suis allé de l'avant et publié ma mise à jour et personne n'a remarqué les problèmes qui résulteraient des ressources périmées. Pour accélérer le développement, il semble que Xcode copie uniquement sur les ressources détectées lors de la construction et de l'installation sur le simulateur ou sur un périphérique de test. (Pour éviter qu'un jeu contenant 500 Mo de ressources doive être recopié à chaque fois que vous construisez et testez.) Lorsque vous (re) déplacez une ressource d'un projet, elle ne la détecte pas et (re) déplace la ressource. vieille copie. Je vais déposer un bug avec Apple à ce sujet. Toutefois, l'AppStore semble effectuer une installation propre à chaque mise à niveau (copie dans le répertoire des documents de l'utilisateur), ce qui ne pose aucun problème dans l'App Store. Je ne suis pas sûr que ce soit un problème lors de l'envoi d'un fichier .ipa par courrier électronique aux bêta-testeurs ou non.

+1

J'ai lutté avec ce problème exact aujourd'hui avec des modèles de données à l'intérieur de momd. Je peux confirmer que les fichiers sont supprimés lors du déploiement du code via un .ipa. J'ai créé un .ipa de construction ad-hoc, je l'ai mis sur mon ordinateur iTunes, j'ai synchronisé mon téléphone avec mon application depuis l'App Store puis j'ai installé le fichier ipa avec iTunes. Il a supprimé les fichiers du modèle de données de base dont je n'ai pas besoin alors que XCode les conserve. J'espère que cela apaise certaines de vos peurs, merci d'avoir mis à jour votre question car je supposais que c'était juste une «fonctionnalité» que je devais traiter dans les versions de l'App Store aussi. :( – Diziet

0

J'ai le même problème. Le problème est que le téléphone garde un cache des plumes. D'une manière ou d'une autre, le cache doit être effacé pour que vous puissiez voir les nouvelles pointes localisées. Je ne veux pas non plus que mes utilisateurs aient à supprimer l'application puisqu'elle stocke des données.

+0

Salut Zambono, Je voulais juste vous faire savoir que après avoir publié mon mise à niveau à l'App Store, les utilisateurs ont pas remarqué les ressources périmées. Il semble donc que ce n'est qu'un problème avec le cycle de publication-construction de Xcode, et non pas lors de la mise à niveau via l'App Store. –