Je suppose que c'est assez galère a mettre en place et que ça risque de pas marcher des masses mais j'essaye de trouver une alternative a l'achat d'un mac pour développer des applis pour IOS. Si il existe d'autres moyens je suis preneur. =)
Je pense que la virtual machine mac OS n'est pas si dur à mettre en place. Ce qui est chiant c'est de faire un "hackintosh". Les retours d'expériences que j'ai eu venaient de gens qui avaient installé mac OS en dual boot sur leur machine Windows. Certains ont galéré, d'autres n'ont jamais réussi. Ceux qui ont réussi n'ont pas gardé longtemps le dual boot parce que ça ramait pas mal. Il faut savoir que c'était pour "essayer". Donc aucune utilisation de Xcode et des différents outils qu'il propose comme le simulateur. Si tu rajoutes cette donnée je pense que l'expérience est encore plus désagréable. Concernant la machine virtuelle à mon avis ça rajoute un cran dans l'horreur puisque les ressources sont partagés. Après pour ce dernier cas je n'ai eu aucun retour d'expérience donc c'est pure spéculation de ma part.
Tu peux toujours essayer, ça ne coûte rien. Et tu te rendras compte par toi même si cette solution est viable ou non.
La seule alternative (je dis la seule, mais au final y'en a plein), si on prend comme objectif le développement d'application mobile, c'est de faire du cross plateforme avec Xamarin par exemple, qui te permet de faire du natif en c# ou des trucs comme Cordova qui te permettent de faire du "pas-natif" avec les technologies Web. Par contre exit le Swift / Objective-C et ça c'est triste (le Swift, pas l'Objective-C)
Si ça ne tenait qu'à moi je te conseillerai l'achat d'un mac, mais je ne connais pas ton profil ni tes moyens donc ce serait déplacé de ma part. (Je l'ai quand même fait de manière plus ou moins subtile )
Désolé mais ce que tu dis n'a aucun sens. Je sais pas, relis toi peut-être non ? Il manque des lettres, ta phrase fait 4 lignes, y'a des mots en trop, la grammaire est bancal et... OH MY GOD ! Un service en ligne à base de papier disponible à distance ?! QU'EST CE QUE C'EST QUE ÇA ?! Qu'est ce qui est disponible à distance ? Le papier ? Le service ? C'est évident s'il est en ligne. Ce serait donc le papier. Mais c'est quoi un service en ligne à base de papier ? Un fax ?
Bref... En supposant que quelqu'un comprenne ce que tu racontes, deux nouvelles questions me viennent alors :
Je suis dans le 4.4 du cours "Tirez parti des frameworks, bibliothèques et add-ons". Je viens d'installer le package Manager avec succès mais quand je relance Xcode 8.2.1 le Package Manager n'apparait toujours pas dans l'onglet Window. Est ce quelqu'un a eu ce problème avec cette version de xcode et a la solution?
Merci à vous
La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
Bonjour à tous je suis entrain de réaliser le TP du cours d'initiation à Swift, seulement je suis confronter à un problème que je n'est pas réussi à résoudre ...
Je souhaiterais dire au compilateur que si variable classe_2 n'est pas égale à "Guerrier" ou "Mage" ou "Archer" de faire une action.
J'utilise donc ce signe || mais Xcode reconnais "Guerrier" ou "Mage" comme un Bool et non comme un String ...
Je vous met l'extrait de mon code pour que vous puissiez m'aider merci ...
func choix_classe() -> String{
var classe_2: String
var i:Bool = true
repeat {classe_2 = input()
if classe_2 != "Mage"||"Guerrier"||"Archer"{
print("Cette classe n'esxiste pas veuillez retaper votre choix :"); i = false
}
} while !i
return classe_2
}
Tu es en train de comparer un String à un Bool, donc j'imagine que ton code ne compile pas avec une petite pastille rouge. Il faut que tu compares un String à un String. Et ce, autant de fois que nécessaire. Donc :
if class_2 != "Mage" || classe_2 != "Guerrier" // and so on...
//Tu peux aussi utiliser un switch
switch class_2 {
case "Mage", "Guerrier", "Archer":
//Some stuff
default:
break
}
EDIT : De toute façon ton "if" est mal pensé. Il retournera toujours true. En supposant que class_2 contienne "Machin", il va tester "class_2 != "Mage" ". ça va retourner true et rentrer dans ta boucle. Donc ça c'est ce que tu veux. Par contre si class_2 contient "Mage", il va tester class_2 != "Mage", ça va retourner false, puis "class_2 != "Guerrier", ça va retourner true et comme c'est un OU logique ça va rentrer dans ton if.
Du coup je te conseille plutôt d'utiliser le switch qui est plus beau et qui fera ce que tu veux. Je te conseille aussi de virer tes Strings et d'utiliser une Enum à la place. C'est plus beau et plus safe, tu te protèges des erreurs bêtes de typo en écrivant ta String qu'à un seul endroit du code.
Je vais utiliser le switch ducoup c'est mieux tu as raison ! Cependant pour les enum j'ai encore un peu de mal mais j'y travail je vais regarder tout ça merci beaucoup !
Bonne et heureuse année 2017 à toute la communauté !
Mon prénom est André. Je suis développeur d'application android. j'ai un gros problème. j'ai généré mon application avec adobe flash professionnel cc 2015. J'ai essayé de l'héberger sous google playstore mais l’application a été refusée car selon eux, la version d'open ssl du lecteur adobe air incluse dans l'application est obsolète
alors quelle version d'adobe flash devrais je utiliser pour générér mon application ou simplement que devrais je faire?
Salut à tous, petite question chapitre "On n'a toujours pas écrit de swift" :
Sachant que la fonction texteModifie envoie une alert dès que j'entre un chiffre dans le textField, je n'arrive pas à voir le textFieldShouldReturn en action..
La question est simple : comment dire a textModifie de se calmer et d'attendre le signal de textFieldShouldReturn pour afficher l'alerte ? Avec un if ? Autre ?
Question toute bête : es-tu certain qu'il faut mettre une alert dans le "texteModifie" (je n'ai pas fait ce chapitre). En l'état, tu as ton code dupliqué à deux endroits. Je ne vois pas l'intérêt de texteModifie (mis à part spammer l'utilisateur d'alert. Ce qui rend l'application très agréable à utiliser)
Ceci dit, même avec ce comportement ignoble, tu devrais pouvoir voir ton textfieldShouldReturn. Celui-ci se déclenche lorsque tu fais... return. Et return ne déclenche pas texteModifie. Ajoute un print dans textFieldShouldReturn pour t'en convaincre. Si celui-ci ne s'affiche pas c'est bien que tu n'appelles jamais cette fonction.
Merci Geda oui je me suis enflammé à glisser des alertes partout J'ai bien l'alerte quand je return (print ok aussi forcément).
Une autre question concernant les contraintes sur les View : Est-il conseillé ou nécessaire de contraindre sa hauteur, sa largeur, sa position sur l'axe des X et sa position sur l'axe des Y pour que cela s'affiche correctement ? (et ceci pour chaque view)
Pour que ton application aie la même tête sur tous les téléphones, c'est nécessaire d'ajouter des contraintes aux views. Cependant, ce n'est pas la seule solution. Tu peux également le faire "programmatically" en définissant les frames (origine, taille) de chaque view dans la fonction didLayoutSubviews.
La première : je comprends pas du tout l'activité 1 à ce niveau là
Vous allez replacer le stepper à sa position initiale. Vous allez donc :
récupérer ses coordonnées au moment où le glisser-déposer commence
et le replacer au moment où il termine.
Pour ça, je veux que vous animiez le stepper pour le replacer. Pour réaliser une animation, on utilise la méthode de classe animateWithDuration de la classe UIView. Vous pouvez choisir l'animation qui vous convient tant que le stepper est bien repositionné.
1 - Pourquoi replacer le stepper à 0 ? 2 - Le slider aussi alors ?? 3 - Pourquoi récupérer ses coordonnées ? 4 - Ou le replacer ??
Deuxième point : Je travaille sur HackBook, et tout tourne à merveille.
J'ai fait d'un HP EliteBook 8470P un MacBook Pro et xCode tourne sans problème.
Sache que si tu bien bien les tuto mais A LA LETTRE sans faille, tu peux builder un hackintosh sans problème. Il faut surtout que tes éléments hardware soient compatibles, et la liste est également dispo.
Moi non plus je n'ai pas compris la logique de l'exercice, pourquoi déplacer un stepper ? Mais c'est simplement pour apprendre les animations faut pas chercher plus loin.
En gros ce que j'ai compris : Tu cliques sur le stepper (pour le déplacer) et t'en profite pour enregistrer sa position au moment du clic (récupérer ses coordonnées au moment où le glisser-déposer commence). Ensuite tu le bouges (avec UIPanGestureRecognizer), selon si tu l'as déplacé à gauche ou à droite sur l'axe des x (par rapport a sa position initiale) tu incrémentes -1 ou +1. Une fois que tu relâches le clic (tu auras donc déplacé le stepper) tu utilises animateWithDuration pour qu'il revienne à sa place tout seul comme un grand (et le replacer au moment où il termine = en français et replacer le stepper à sa position initiale au moment où son déplacement est terminé je suppose).
Je ne sais pas encore comment utiliser le began changed ended mais il y a des chances que cela corresponde aux 3 étapes que je viens de décrire.
Je veux bien un coup de main pour insérer l'animation.. Je n'arrive pas à déplacer le stepper vers le CGPoint initialMoveLocation.
switch sender.state {
case .began:
let step = sender.view!
let initialMoveLocation = sender.location(in: self.view!)
step.center = initialMoveLocation
print("La position initial du stepper est \(initialMoveLocation)")
case .changed:
print ("Le Stepper se déplace")
case .ended:
endedMoveLocation = sender.location(in: self.view!)
print("La position finale du stepper est \(endedMoveLocation)")
Quel animation glisser ici ???
print("Le stepper est de retour à sa position initiale")
default: break
}
Question bonus : J'ai déclarer deux variables initialMoveLocation et endedMoveLocation plus tôt. Dans la fonction lorsque je les reprends avec var ou let cela print un (x,y), par contre si je les reprends sans var ni let comme dans le case .ended ci dessus cela print un optional(x,y). A quoi cette différence est-elle dûe ?
Si j'ai bien compris le but de l'exercice, à savoir remettre le stepper à sa position d'origine, ton endedMoveLocation ne sert à rien. Il faut faire un truc style :
Alors, j'ai écrit ce truc de mémoire, ça ne marche pas. Déjà initialMoveLovation a l'air de n'être défini nul part dans ton scope. Et je ne sais pas comment fonctionne "location". A toi de le faire fonctionner.
Pour la question bonus :
En supposant que .location te retourne un String
Dans le cas de .began tu créés une variable initialMoveLocation. Vu que .location retourne un String, cette variable est de type String.
Dans le cas de .ended, tu utilises une variable déjà déclaré qui est de type String? (j'ai décidé de manière arbitraire que .location retournait un String).
Donc dans le premier cas tu n'as pas d'optionnel et dans le second cas tu en as un. Si tu utilises initialMoveLocationdans le .ended, tu auras nil. Puisque la variable initialMoveLocationcréée dans .begann'existe plus. Et c'est elle que tu as utilisé et non pas, comme tu le penses certainement, celle que tu as pu définir ailleurs (au même endroit que endedMoveLocation j'imagine) ¿ Claró ?
EDIT : Va savoir pourquoi, lorsque je met en gras, parfois ça garde la couleur, parfois ça l'override en orange. M'enfin...
Merci Geda en effet la variable crée en began donne nil si je l'a reprend dans le ended, du coup je ne sais pas comment faire pour réutiliser la location du began dans le ended.. Si quelqu'un a une soluce je suis preneur j'ai sillonné le web sans élément de réponses.
Edit : Les soluces sur le web c'est de passer par le viewDidAppear
Et bien je suppose que ton code ressemble à quelque chose comme ça, non ?
class A {
var initialMoveLocation : String? //C'est encore le même type arbitraire !
func x(sender: AnyObject) {
switch sender.state {
default: break //la flemme de recopier
case .began
let initialMoveLocation = "X" //Vu que c'est un String, je fais ce que je veux.
}
}
Dans ce cas,
Il faut bien que tu comprennes que ton var initialMoveLocation défini comme "variable membre" n'est pas le même que ton let initialMoveLocation. A partir du moment où tu définis une variable dans un "inner scope" elle sera utilisé dans ce scope et dans les suivants (je crois, à vérifier, mais normalement ce serait ça). A moins que tu explicites clairement que tu fais référence à la variable membre avec le mot cléself
YATAAAA !!!! Mille merci je pense que tu m'as fait comprendre une notion essentielle avec ton exemple.
Big up à toi Geda grand professeur, au début je me suis dit mais qu'est-ce qu'il espère que je fasse avec ça ??? A-t-il compris ma question ? Alors qu'en fait tu m'en as donné juste assez, pil poil ce qu'il faut pour que je saisisse et applique à l'exo magnifique. (C'est toujours pas parfait mais ça bouge !)
Je suis dans le 4.4 du cours "Tirez parti des frameworks, bibliothèques et add-ons". Je viens d'installer le package Manager avec succès mais quand je relance Xcode 8.2.1 le Package Manager n'apparait toujours pas dans l'onglet Window. Est ce quelqu'un a eu ce problème avec cette version de xcode et a la solution?
Merci à vous
J'ai exactement le meme problème je pense que c'est du au changement de version mais j'ai beau chercher je trouve pas de solution. Peut être faut-il attendre la prochaine Màj
D'après les résultats de mes recherches ce serait Apple qui empêcherait ce genre d'installation sur ses logiciels pour plus de sécurité. Ça reste à vérifier!
A+
La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Création de solution web et mobile