Frage

(fast gelöst, aber nicht ganz) (Meine vorübergehende Lösung ist, eine Lücke Methode zu verwenden und sie in jeder Taste rufen, und auf diese Weise kann ich den Code von mehreren Tasten eher dann verwendet, bearbeiten, wenn Verbesserungen machen jeden einzelnen Tasten if-Anweisung bearbeiten zu müssen)

ich wette, es ist ein wirklich einfachen Fehler, den ich gemacht habe, aber ich kann es nicht finden.

Ich versuche, einen zuvor definierten Alarm zu zeigen, wenn eine ganze Zahl 50 erreicht; dies ist die if-Anweisung I in der viewDidLoad Methode verwenden:

if(count == 50){
    [alert show];
}

Wenn die ganze Zahl 50 erreicht, passiert nichts. Wo habe ich falsch gegangen?

Die ganze Zahl ist, wie dies in einer IBAction geändert:

 count+=10;

Wenn ich entfernen Sie die if-Anweisung und lassen nur die Warnung zu zeigen, es wird angezeigt, wenn die Ansicht Lasten. So die Warnung ist nicht das Problem.

Jemand wies darauf hin, dass, wenn dieser Code nur einmal in der Methode viewDidLoad ausgeführt wird und die ganze Zahl auf 50 zu einem späteren Zeitpunkt geändert wird, es wartet nicht für die ganze Zahl 50 ist, wird stattdessen sieht der Wert nicht mehr als 50 und mehr die Warnung überhaupt nicht ausgeführt werden.

Wie würde ich die ganze Zahl mit Code zu sehen, und führen Sie eine Benachrichtigung , wenn die ganze Zahl 50 ist, Aber nicht die Warnung in der Aktion aufrufen, die die ganze Zahl steigt?

Oh, und übrigens habe ich versucht, die if-Anweisung in der Aktion aufrufen, die die ganze Zahl erhöht und das funktioniert, aber ich habe über 100 Tasten, die den Integer-Zählung und Kontrolle erhöhen, wenn der Wert 50 in jeder und jede einzelne Taste erscheint ein wenig Platz verbrauchen und Zeit für alle raubend, die und Einfügen kopieren. Auch plane ich auf, die mehr als nur eine Warnung geschehen, wenn die ganzen Zahl erreicht 50. Ich bin sicher, es gibt eine effizientere Möglichkeit nur überprüft, ob der Wert der ganzen Zahl Zahl beträgt 50.

War es hilfreich?

Lösung

Versuchen Sie das Hinzufügen

if(count == 50){
    [alert show];}

In der gleichen IBAction direkt nach dem 10 hinzufügen zu zählen.

Andere Tipps

Wenn Sie sagen,

  

Aber wenn die ganze Zahl 50 nichts erreicht geschieht

Das führt mich zu glauben, dass Sie den ganzzahligen Wert sind zu ändern nach die -viewDidLoad Methode ausgeführt wird. Ihre if-Anweisung nur einmal ausgewertet wird, wenn die Ansicht Lasten, also, wenn Sie den Wert der ganzen Zahl nach diesem Punkt zu ändern Sie die Warnung im Hinblick auf alles, was verändert die ganze Zahl hinzufügen müssen.

Dies sollte in Ordnung sein - Objective-C ist eine dünne Schicht auf der Oberseite C, so gilt C-Syntax funktionieren sollte. Welche Variable zählen? Sie wollen es als int zu definieren, nicht als NSNumber. NSNumber ist eine Klasse, die eine Reihe wickelt, so dass es als ein Objective-C Objekt verwendet werden kann -. Aber man kann sich nicht vergleicht die == Syntax

Ich hoffe, das hilft!

prüfen out Schlüsselwert Beobachtung

Wenn Sie den Zähler eine Eigenschaft zu machen, sollten Sie einrichten können, ein Beobachter, der ausgelöst wird, wenn sich der Wert ändert. In diesem Beobachter, können Sie Ihren Scheck den Alarm ausgelöst.

Versuchen

NSLog(@"count is %d",count); 

und sehen, ob das Problem gibt. Es ist schwer zu sagen, ob Zählung wird vermasselt oder Alarm, aber das Problem ist nicht mit dem if-Anweisung selbst.

ein paar Dinge zu versuchen,

  • setzen Sie einen Haltepunkt auf dem if-Anweisung
  • das ändern, wenn Anweisung count >= 50
  • ist wirklich ein int zählen oder ist es ein Schwimmer?

Die einfachste Antwort:. Alle Dinge, die in Ihrem Controller durch ein Verfahren count gehen erhöhen, dies zu tun und diese Methode überprüfen, ob es Zeit ist, um die Warnung zu zeigen

Die kompliziertere Antwort, die den Wert beinhaltet hier: Schlüsselwert Beobachten . Sie könnten einen Beobachter einrichten, um den Wert zu beobachten und mit der Warnung reagieren, wenn es 50 trifft Aber dies wird mehr Code nehmen und komplizierter und fehleranfällig sein als nur eine zentrale Methode zur Einführung des Verhalten zu behandeln.

Ich verstehe es nicht, warum nicht zeigen Sie die Warnung in den Code, der den Zähler erhöht? Es braucht jut einen Verweis auf die UIAlertView ... Oder senden Sie uns eine Mitteilung der Alarm Halte Code hört.

ViewDidLoad wird nur ausgeführt, wenn die Ansicht geladen wird - das ist, wenn es erstellt wird. Danach wird es nicht wieder laufen lassen, besondere Umstände abgesehen.

Wenn Sie wollen, dass es die Zählung zu prüfen, jedes Mal, wenn Sie einen Knopf drücken und die Zählung zu erhöhen, dann tut dies im IBAction.

Sie können eine Methode machen, die die Zähler wie so

prüfen
-(BOOL) checkCounter
{
  return count == 50;
}

Und nennen Sie es in Ihrem Tasten wie so, nachdem Sie es erhöht haben:

if ([self checkCounter])
{
//do stuff when it's 50
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top