J'ai une fonction contenant des chaînes de texte dans une vue textuelle. Je voudrais changer la décoloration de ce texte au fil du temps. Il ne s'agit pas de la mise en œuvre de la perte de doute, mais plutôt de la réalisation de deux arguments (la valeur alpha et de la gamme de caractères qui doivent être fanées) au sélecteur de Nstimer.
J'ai regardé Ce question, mais cela ne me fournisse pas une réponse. P>
C'est ce que j'ai maintenant: p> Cependant, il me donne un "Sélecteur" d'argument supplémentaire "" dans l'appel ". Je dois être capable de passer deux arguments, mais je ne peux pas passer une seule correctionnelle non plus; Supprimer le VAL2 de la fonction et supprimer "SAVICING", donc je ne transmett ainsi qu'un argument, entraîne la fonction d'impression de la ligne "Impression 140611230609088" à chaque étape de temps. p> p>
3 Réponses :
Tout d'abord, vous avez trop d'arguments. Deuxièmement, le FUNC reçoit un NSTIMER, vous devez donc utiliser AnyObject ou NSTIMER.
Donc, mon suggère serait donc d'utiliser un dictionnaire ou un tableau et transmettre cela comme argument userinfo comme: P>
func someFunc(){ var timer: NSTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("val:"), userInfo: ["key1" : 1 , "key2" : "aString"], repeats: true) } func val(val : NSTimer?) { println("printing \(val?.userInfo)") }
Pourquoi quelqu'un va-t-il descendre ça? C'est une approche parfaitement valide.
N'a pas voté, mais la fonction de minuterie devrait prendre un argument NSTIMER code> (code> Func Val (TIMER: NSTIMER) CODE>.
Tu as raison. TOWOOBJECT fonctionne, mais il est plus propre d'utiliser NSTIMER, je suis d'accord.
Oui, tu as encore raison. Je suis une créature d'habitude: D
Cela semble être un moyen d'aller. Cependant, comment accéderais-je aux différentes valeurs?
Si vous utilisez un dictionnaire, vous utiliseriez val? .UserInfo? .ObjectForkey ("Key1") code> ou
val? .uerinfo? ["Key1"] code>
Créez un tableau avec vos objets et envoyez-le à userinfo. Essayez ceci: espère que cela aide .. :) p> p>
Je t'ai essayé méthode et placée println (timer.userinfo? Name) code> dans la fonction
val code>. Cela écrit nil chaque fois que la fonction est exécutée.
essayez d'imprimer la minuterie.userinfo
Impression TIMER.USERINFO CODE> Donne-moi ceci dans la console informatique:
Facultatif (<_ TTCSSS23_CONTINGUREDRAYSTORAGE0000007FD413454E20 0X7FD413645890> (ONE, DEUX)) CODE> Comment puis-je accéder aux valeurs individuelles? Je ne peux pas utiliser
Timer.userinfo [1] code> Par exemple, cela me donne une erreur hors limites, alors je suppose que cela ne me dirige pas vers l'index de la matrice. Affectation
Ar code> à
Timer.userInfo code> Produit un avertissement (non erreur) que le type inféré de
arr compte code> est de type anyobject, qui peut être inattendu.
Pourquoi ne prenez-vous pas la minuterie.userinfo dans un tableau ??? comme arr = timer.userinfo. Ensuite, essayez d'y accéder par index ???
J'ai édité cela dans ma réponse. var arr = tempe.userinfo code> se comporte comme Timer.UserInfo, et je ne peux pas accéder à aucun de ses indices.
Laissez-nous Continuer cette discussion en chat .
Lorsque j'utilise les variables ("une", "deux") dans votre exemple, je travaille avec une copie des données d'origine. Cependant, je veux transmettre la chaîne de TextView et apporter des modifications au lieu d'une copie. Existe-t-il un moyen de transmettre l'adresse de la mémoire de la chaîne dans la matrice, alors je modifie la chaîne affichée?
J'ai modifié votre code comme suit.
J'ai créé un NSTIMER strong>! Variable qui sera attribuée dans OnefunCunc fort> () par la méthode Puis j'ai défini Après cela, j'ai envoyé le userinfo strud> qui sera récupéré à l'aide de TimerInfrimer.userinfo strong> dans Val () Strong> P> li>
ol> J'espère que cela vous aidera à résoudre votre problème. p> Remarque: vous pouvez envoyer quelque chose à userinfo. Mais, bien sûr, vous devez récupérer l'utilisateurInfo en utilisant TimerInfr.UserInfo Strong> P> P>
Où puis-je définir "userinfo" code> égal à mes deux variables, de sorte que je puisse les récupérer dans
val () code>?
Créez un tableau de ces deux valeurs et passez ce tableau avec UserInfo SchedulgueredTimerwithTimeVal. Vous pouvez ensuite récupérer ce tableau à l'aide de Timer.UserInfo