Débuter la programmation avec livre de chez micro application

patk29patk29 Membre
02:21 modifié dans Vos applications #1
Bonjour,

souhaitant apprendre la programmation Iphone j'ai acheté le livre suivant :

"Developpez vos applications pour Iphone et Ipad" de chez Micro Application

j'ai déja rencontré plusieurs problèmes dans les exemples du livre qui certes compilent et s'executent sans erreurs mais ne donnent pas le résultat décrit dans le livre (dans le détail l'application convertisseur de monnaie pose des problèmes)

des personnes auraient elles rencontré le même souci avec ce livre ?

merci

Réponses

  • avinitavinit Membre
    02:21 modifié #2
    Bonjour,

    Moi je me forme aussi en se moment, j'ai le même livre et je constate les même défaut et même en downlodant les sources sur le site de micro app certaine chose ne fonctionne pas
  • DrakenDraken Membre
    février 2011 modifié #3
    Non, mais je n'ai pas tout testé. J'ai acheté la plupart des ouvrages sur la programmation iPhone et je papillote d'un livre à  un autre pour trouver des informations. Tu peux être plus précis dans la description du problème, en donnant le numéro des pages présentant les exemples ?

  • patk29patk29 Membre
    janvier 2011 modifié #4
    page 104 : la définition de la méthode permettant de n'accepter que des chiffres dans le champ de saisie ne fonctionne pas et continue a accepter des lettres.

    chap. 4.2 page 115:

    toutes les modifications devant permettre de saisir des nombres à  décimales avec soit une virgule, soit un point selon la langue sélectionnée ne fonctionne pas.

    de même la conversion en dollars n'est plus effectuée alors que la conversion s'effectuait au chapitre précédent avant la modification de l'exemple.


    je ne peux aller plus avant dans cet exemple vu que cela ne fonctionne pas déjà .

    est ce un problème de version de SDK ?
  • airsebairseb Membre
    02:21 modifié #5
    salut,
    J'ai le meme probleme. Tout ce compile bien, mais la conversion ne s'effectue plus.
    Et le probleme du clavier qui accepte toujours toutes les entrees est toujours present.

    En ce qui concerne la limitation du clavier, aux chiffres,  j'ai trouve ca sur le net :

    http://cocoamatic.blogspot.com/2010/08/uitextfield-only-allow-numeric-entry.html

    Il est dit qu'il ne faut pas oublier d'ajouter cette ligne au propriete du delegate :

    self.myTextField.delegate = self;
    


    Par contre, je n'arrive pas a savoir ou exactement...???
  • DrakenDraken Membre
    février 2011 modifié #6
    L'auteur du livre est inscrit sur le forum, sous le compte jpimbert. Pourquoi ne pas l'agresser lui poser la question ? Ceci dis, il me semble qu'il ne passe pas très souvent.

    dans 1281958418:

    Je suis donc obligé de conseiller, en toute objectivité  ;) "Développez vos applications pour iPhone et iPad" en guide complet chez Micro-Application.
    L'éditeur m'a explicitement demandé (et ça m'a bien plu) que chaque concept (utilisation d'un framework, ou présentation d'un pattern) soit illustré par au moins un exemple. J'ai essayé le plus souvent possible de commencer par les exemples et d'expliquer la théorie ensuite.


  • CéroceCéroce Membre, Modérateur
    02:21 modifié #7
    Je n'ai pas le livre et je ne peux pas trop vous aider, mais pour filtrer les frappes dans un UITextField, ou tout le simplement retirer le clavier de l'écran, il faut que ce soit géré par un délégué.

    Fixer le délégué se fait habituellement dans la méthode -[viewWillAppear:] du view controller:

    - (void)viewWillAppear:(BOOL)animated<br />{<br />	[super viewWillAppear:animated];<br /><br />	textField.delegate = self;	// Le view-controller devient le délégué<br />}
    


    Le filtrage de la frappe se fait ensuite grâce aux méthodes déléguées de UITextField (voir UITextFieldDelegate Protocol).
  • airsebairseb Membre
    02:21 modifié #8
    @patk29

    Apres un milliard de modifs, de relancages(ca m'etonnerait que ca existe comme mot...), de nettoyages...
    La page 104 fonctionne!

    Peut-etre que ton probleme vient de la methode qui prends plusieurs lignes sur le livre et qui est donc coupe.
    Voici mon code de la page 104:

    - (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {<br />	NSString *resultingString = [textField.text stringByReplacingCharactersInRange:range withString:string];<br />	return [[NSCharacterSet decimalDigitCharacterSet] isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:string]];<br />}
    


    et le reste fonctionne egalement...donc pas besoin de reveiller demander a JPImbert.

    En tout cas merci pour vos reponses supersoniques.
  • jpimbertjpimbert Membre
    02:21 modifié #9
    ça y est. Je suis réveillé.
    Je vous pris de bien vouloir m'excuser pour mon manque d'assiduité. En ce moment je suis à  fond sur la deuxième édition, je ne fais qu'un passage par jour ou tous les deux jours, juste pour me tenir informé. Je n'avais pas vu les posts du 19 janvier.

    Malgré le soin que j'ai apporté sur les exemples et sur la rédaction, il y a "quelques" coquilles ; j'en profite pour remercier publiquement les lecteurs qui m'en ont signalé, et ceux qui m'ont demandé des précisions, preuve que la rédaction n'était pas très claire. La deuxième édition sera mieux.

    Concernant le code de la page 104, il est correct. Je ne l'ai pas modifié pour faire tourner le bazar en version 4.2 (je viens de revérifier). Les sauts de lignes imposés par la largeur du livre ne sont pas gênant. Le code donné par airseb est correct aussi mais je préfère le mien. C'est normal c'est le mien  ;)
    Le problème de patk29 vient peut être du fait que le contrôleur de vue n'est pas connecté à  l'Outlet delegate du champ de texte ; en haut de la page 103.
  • patk29patk29 Membre
    02:21 modifié #10
    j'ai vérifié les points énoncés précédemment:

    - l'outlet delegate est bien connecté a file owner , faut il faire la même chose avec le champ euros ? (pas expliqué dans le bouquin) dans le doute j'ai essayé mais toujours pas de conversion...

    - j'ai modifié la méthode textfield proposé par airseb pas de changement de plus un warning 'unused variable resultingstring'

    - la méthode proposée par Ceroce provoque une erreur.

    j'ai voulu continuer malgré tout en faisant l'appli convertisseur 2 mêmes resultats rencontrés (pas de conversion) les seuls fichiers communs entre les 2 projets étant les fichiers convertisseur.h et convertisseur.m

    sinon je veux bien un zip des applis qui tournent normalement .

    merci
  • NseaProtectorNseaProtector Membre
    02:21 modifié #11
    dans 1296722482:

    j'ai vérifié les points énoncés précédemment:

    - l'outlet delegate est bien connecté a file owner , faut il faire la même chose avec le champ euros ? (pas expliqué dans le bouquin) dans le doute j'ai essayé mais toujours pas de conversion...

    merci


    Sans connaitre l'exemple cité je penses que tu n'as pas compris le binding des objets. Si tu as un objet NSTextField , tu as une déclaration dans ton source qui doit ressembler a ça:
    IBOutlet NSTextField *monTexte;
    Ce qui ajouteras dans interface builder la possibilité de connecter n'importe quel NSTextField à  monTexte.
    L'important se serait que tu comprennes pourquoi. Dans IB tu pose un objet NSTextField sur ta fenêtre mais il te faut pouvoir afficher du texte dedans depuis ton code, non ? Donc il faut relier ton objet avec dans mon exemple l'outlet monTexte. Outlet signifie sortie. Du coup si tu changes la valeur de monTexte dans le code source, la vue affichera la nouvelle valeur dans les objets connectés a mon outlet.
    Enfin je crois....
  • patk29patk29 Membre
    février 2011 modifié #12
    le but étant d'apprendre ce type de programmation je me fie scrupuleusement à  la démarche décrite dans le livre et il me semble que les choses manquent  de clarté pour un débutant. Des choses qui peuvent paraitre évidentes à  un développeur confirmé sous Xcode ont pu être omises.

    je ne saurai trop conseiller à  l'auteur de fournir ses sources en ligne afin que le débutant ait une base pour comparer ce qui ne marche pas.

    pour moi jusqu'a présent les exemples fournis du bouquin ne fonctionnent pas.

    autre exemple, celui de la page 187 dataPicker :

    pourtant que 3 lignes de code à  rentrer et 2 connexions à  faire et résultat pas d'erreur de compil mais au lancement écran noir et sortie de programme !!!

    de plus il y a une erreur p189 il manque le point dans "self datePicker = nil;"
  • airsebairseb Membre
    02:21 modifié #13
    Les fichiers sont dispo sont dispo sur le site de microapp :
    http://www.microapp.com/livre_developpez_vos_applications_iphone_ipad_2802.html

    Et tu les trouveras dans le bouton "exemples" sous forme de zip(sous l'image du livre).
    Par contre, attention c'est du SDK 3 si je ne me trompe pas...
  • patk29patk29 Membre
    02:21 modifié #14
    merci j'ai vérifié mais malheureusement je suis en SDK 4.2 et apparemment pas de compatibilité avec les versions antérieures en vérifiant dans "edit project settings" .
  • airsebairseb Membre
    02:21 modifié #15
    moi aussi je suis en 4.2, mais j'ai copie le code des fichiers et fait les liens a la main sous IB et ca fonctionne.
  • jpimbertjpimbert Membre
    02:21 modifié #16
    La démarche pour convertir un projet SDK 3 à  SDK 4.2 est la suivante :
    1/ Ouvrir le projet sous XCode
    2/ Ouvrir le groupe Targets
    3/ Sélectionner la cible (par exemple Convertisseur1)
    4/ Menu File->Get Info (ou clic droit Get Info)
    5/ Sélectionner l'onglet Build
    6/ Modifier le paramètre "Base SDK" (choisir Latest SDK)
    7/ Modifier si besoin le paramètre "iOS Deployment Target" (par exemple iOS 3.1.3 si on veut que l'appli tourne sur toutes les versions entre 3.1.3 et 4.2)
    8/ Fermer la boà®te de dialogue
    9/ Modifier les options de build dans le menu Project (les sous-menus Set Active ...), pour mettre par exemple Simulator 4.2
  • patk29patk29 Membre
    02:21 modifié #17
    merci, après conversion les exemples téléchargés semblent fonctionner.

    par contre j'ai noté des différences de code avec les lignes du bouquin ceci explique sans doute pourquoi cela ne fonctionnait pas chez moi avant.
Connectez-vous ou Inscrivez-vous pour répondre.