• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Problem mit NSMutableArray bzw. UILabel

iYassin

Galloway Pepping
Registriert
13.04.09
Beiträge
1.365
Ich bin momentan am Objective C bzw. Cocoa für Mac und iPhone-Lernen :) Jetzt habe ich mal von cocoa-coding.de die Lotto-App für den Mac gebastelt - funktioniert. Jetzt wollte ich das auch fürs iPhone umsetzen. Da eben statt Textfelder Labels, das ganze in eine Utility Application.
Mal hier die beiden MainViews:

//
// MainView.h
//
// Created by ... on 25.09.09.
// Copyright 2009 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface MainView : UIView {
IBOutlet UILabel *zufall1;
IBOutlet UILabel *zufall2;
IBOutlet UILabel *zufall3;
IBOutlet UILabel *zufall4;
IBOutlet UILabel *zufall5;
IBOutlet UILabel *zufall6;
}
- (IBAction)initializeRandom;
- (IBAction)spielen;
@end

//
// MainView.m
//
// Created by ... on 25.09.09.
// Copyright 2009 __MyCompanyName__. All rights reserved.
//

#import "MainView.h"

@implementation MainView
- (IBAction)initializeRandom {

}

- (IBAction)spielen {
NSMutableArray *zArray;
zArray = [[NSMutableArray alloc] init];
[zArray retain];
NSNumber *zZahl;

int x ;
int a ;
bool valid;

for (a = 0; a < 6; a++)
{
valid = false;

while (valid == false)
{
zZahl = [[NSNumber alloc] initWithInt:(random() %49) +1];
valid = true;

for (x = 0;x < [zArray count]; x++)
{
if ([zZahl intValue] == [[zArray objectAtIndex:x] intValue])
{
valid = false;
[zZahl release];
break;
}
}
}

[zArray addObject: zZahl];
[zZahl release];

}
[zufall1 setText:[zArray objectAtIndex:0]];
[zufall2 setText:[zArray objectAtIndex:1]];
[zufall3 setText:[zArray objectAtIndex:2]];
[zufall4 setText:[zArray objectAtIndex:3]];
[zufall5 setText:[zArray objectAtIndex:4]];
[zufall6 setText:[zArray objectAtIndex:5]];
[zArray release];

}

- (void) awakeFromNib {
srandom(time(NULL));
}
@end

Die zugehörigen Elemente sind auch alle schön im Interface Builder erstellt und gelinkt. Die funktionieren auch - wenn ich jetzt ganz unten bei zufall1 setText: das mit zArray durch einen NSString ersetze, und dann in der App den Button "Spielen" klicke, zeigt er den NSString beim Label an. Wenn ich jetzt allerdings die App wie oben gezeigt ausführe, und dann auf "Spielen" klicke, schließt sich die App sofort. Fehlerbericht in der Debug-Konsole:

2009-09-25 20:24:03.344 Lotto-iPhone[1661:207] *** -[NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xe36130
2009-09-25 20:24:03.346 Lotto-iPhone[1661:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xe36130'

Damit kann ich jetzt allerdings reichlich wenig anfangen.

Wäre jemand so nett, mir zu erklären, was die Meldung besagt, und was ich im Code falschgemacht habe? :)

Vielen vielen Dank schonmal :)
 

ifthenelse

Fießers Erstling
Registriert
07.12.06
Beiträge
129
Ganz kurz:

1. Du musst dem Property text Deiner UILabels einen NSString zuweisen, kein NSNumber. Daher auch die Fehlermeldung.
2. Suche Dir besser Beispiele/Tutorials zur iPhone-Programmierung! Das SDK (oder genauer: die Doku) ist voll davon. Im Detail gibt es so einige Unterschiede...

Gruss, Jörg
 
  • Like
Reaktionen: iYassin

iYassin

Galloway Pepping
Registriert
13.04.09
Beiträge
1.365
Super, jetzt funktioniert es! :)
Ich werde mir in absehbarer Zeit zu beiden Themen jeweils ein Buch zulegen, zumindest habe ich das vor :D Die Doku könnte ich mir aber mal anschauen, da hast du Recht ;)
 

Ares83

Hibernal
Registriert
10.10.07
Beiträge
2.011
Die Doku ist dein bester Freund, vieles wirst du nur darin finden. Büchern sind um in ein Thema reinzukommen gut, aber nachher hilft nur die Doku. Ein gutes Buch für die iPhoneprogrammierung ist Beginning iPhone Development von Dave Mark, da gibts gerade ne neue Fassung mit Core Data etc. Auch gespannt bin ich auf das Buch von Galileo, das sollte die nächste Tage bei mir im Briefkasten liegen.