Portage d'une application sur un autre MAC.
macvelotte
Membre
Je suis content de moi (!!!) : j'ai une application calculette, à mémoires "permanentes" qui fonctionne bien ; les mémoires sont gardées dans NSUserDefaults, donc dans le fichier Bibliothèque/Preferences/com.apple.myCocoaApp.plist de mon répertoire.
Si je lance l'application et que ce fichier n'existe pas, il y aura plantage.
Il doit bien y avoir un bout de code avec utilisation de "nil" qui signale que le NSUserDefaults n'a pas encore été créé et qu'il faut passer outre à sa lecture.
- (void)awakeFromNib
{
NSMutableArray *mem;
mem=[[[NSUserDefaults standardUserDefaults] arrayForKey:@Memoires] mutableCopy];
"code à introduuire ici ????"
M1 = [(NSNumber *)[mem objectAtIndex:0] doubleValue];
M2= [(NSNumber *)[mem objectAtIndex:1] doubleValue];
M3= [(NSNumber *)[mem objectAtIndex:2] doubleValue];
M4= [(NSNumber *)[mem objectAtIndex:3] doubleValue];
[self displayM];
}
Si je lance l'application et que ce fichier n'existe pas, il y aura plantage.
Il doit bien y avoir un bout de code avec utilisation de "nil" qui signale que le NSUserDefaults n'a pas encore été créé et qu'il faut passer outre à sa lecture.
- (void)awakeFromNib
{
NSMutableArray *mem;
mem=[[[NSUserDefaults standardUserDefaults] arrayForKey:@Memoires] mutableCopy];
"code à introduuire ici ????"
M1 = [(NSNumber *)[mem objectAtIndex:0] doubleValue];
M2= [(NSNumber *)[mem objectAtIndex:1] doubleValue];
M3= [(NSNumber *)[mem objectAtIndex:2] doubleValue];
M4= [(NSNumber *)[mem objectAtIndex:3] doubleValue];
[self displayM];
}
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'utilise une entrée avec le nom de l'application (par exemple), si la valeur est nil, alors c'est que le fichier de prefs n'existe pas et j'initialise avec les valeurs par défauts.
Un détail: "com.apple.myCocoaApp.plist" c'est toi Apple ! Justement j'ai plein de questions à te poser ;D
Je pense que "fr.macvelotte.myCocoaApp" comme identifiant de bundle (CFBundleIdentifier) conviendrait mieux
quelque chose comme ça ?
Voila un exemple :
Cette facon de faire a l'avantage d'eviter un if a chaque demarage ou a chaque ouverture d'un nouveau document.
Verifie juste que le test logique est bon (i<4) il se peut qu'il faille changer
Je confirme
Au lieu de te moquer, dis moi comment on utilise le test logique. :why?:
for (i =0; i<4; i++) {
[mem addObject:[NSNumber numberWithDouble:0.0]];
}
[/tt]
ça doit être ça
en gros:
si la condition est vraie, on recommence...
en détail:
a. - la 1ère partie du 'for' est exécutée (i=0)
puis
b. - le bloc d'instruction qui suit est exécutée (ce qu'il y a entre { et } )
c. - la 3ème partie du 'for' est exécutée (i++)
d. - la condition est évaluée (i<4): si elle est vrai, on recommence en b.
donc
for (int i =0 ; i<4; i++){
[mem addObject:[NSNumber numberWithDouble:0.0]];
}
fera exécuter le addObject 4 fois (avec i=0, puis 1, puis 2, puis 3)
et après le for, i vaudra 4.
Ce seront ces valeurs qui seront retournée si le fichier de préférence n'existe pas..
Tant que ces valeurs ne sont pas modifiées, elles ne seront pas écrites dans le fichier de préférences
Je vais essayer les "différents cas de figure ...".
Tous ces renseignements sont très encourageants.
Merci ! ::)