Hallo liebe Xcode-Community,
ich bin ein Neuling im Bereich App-Entwicklung (IPhone) und bei den ersten Schritten kleinere Apps zu programmieren.
Zu meinem Fehler: Das Programm sieht vor eine .plist einzulesen und diese in einem 2-Spalten-Picker auszugeben (Spalte1: Staatennamen Spalte2:Zip codes)
Ich benutze zum lernen das Buch "iPhone 3 Development" von apress und tippe dort den code grundsätzlich erstmal ab, um zu sehen wie es zu funktionieren scheint.
Das Buch ist allerdings noch für Xcode3.x.x geschrieben während ich Xcode4.0.2 benutze. Jetzt gibt mir Xcode beim starten der App folgenden Fehler aus:
"Thread 1: Program recieved signal: "SIGABRT". Schaue ich mir den Fehler genauer an so sagt er mir das meine Variable "zips" eine ungültige Summe (invalid Summary) enthält.
(__NSCFDictionary* zips 0x4b5bfc0 Invalid Summary) da ich Neuling bin kann ich leider keine wichtigen Zusatzinformationen geben, da ich noch nicht einschätzen kann aus welcher Richtung das Problem kommt. Hier einmal der Code zu meinem Programm: (Auf der .xib gibt es nur den Picker und einen RectRoundButton zur Ausgabe des Wertes in einem alert)
Alles anzeigen
Es würde mich sehr freuen, wenn mir jemand helfen könnte.
/edit: Und wenn mir jemand verrät, wie ich den Code besser lesbar hier posten kann wäre ich ihm ebenfalls dankbar!
/edit die Zweite: Hoffe ich hab den Code jetzt in eine angenehm zu lesende Form gebracht. (Danke an Thallius)
MfG
Blaluma
ich bin ein Neuling im Bereich App-Entwicklung (IPhone) und bei den ersten Schritten kleinere Apps zu programmieren.
Zu meinem Fehler: Das Programm sieht vor eine .plist einzulesen und diese in einem 2-Spalten-Picker auszugeben (Spalte1: Staatennamen Spalte2:Zip codes)
Ich benutze zum lernen das Buch "iPhone 3 Development" von apress und tippe dort den code grundsätzlich erstmal ab, um zu sehen wie es zu funktionieren scheint.
Das Buch ist allerdings noch für Xcode3.x.x geschrieben während ich Xcode4.0.2 benutze. Jetzt gibt mir Xcode beim starten der App folgenden Fehler aus:
"Thread 1: Program recieved signal: "SIGABRT". Schaue ich mir den Fehler genauer an so sagt er mir das meine Variable "zips" eine ungültige Summe (invalid Summary) enthält.
(__NSCFDictionary* zips 0x4b5bfc0 Invalid Summary) da ich Neuling bin kann ich leider keine wichtigen Zusatzinformationen geben, da ich noch nicht einschätzen kann aus welcher Richtung das Problem kommt. Hier einmal der Code zu meinem Programm: (Auf der .xib gibt es nur den Picker und einen RectRoundButton zur Ausgabe des Wertes in einem alert)
Brainfuck-Quellcode
- // DependentComponentPickerViewController.h
- // Pickers
- //
- // Created by Developer on 16.08.11.
- // Copyright 2011 __MyCompanyName__. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- #define kStateComponent 0
- #define kZipComponent 1
- @interface DependentComponentPickerViewController : UIViewController
- <UIPickerViewDelegate, UIPickerViewDataSource>
- {
- UIPickerView *picker;
- NSDictionary *stateZips;
- NSArray *states;
- NSArray *zips;
- }
- @property (nonatomic, retain) IBOutlet UIPickerView *picker;
- @property (nonatomic, retain) NSDictionary *stateZips;
- @property (nonatomic, retain) NSArray *states;
- @property (nonatomic, retain) NSArray *zips;
- -(IBAction)buttonPressed;
- @end
- //
- // DependentComponentPickerViewController.m
- // Pickers
- //
- // Created by Developer on 16.08.11.
- // Copyright 2011 __MyCompanyName__. All rights reserved.
- //
- #import "DependentComponentPickerViewController.h"
- @implementation DependentComponentPickerViewController
- @synthesize picker;
- @synthesize stateZips;
- @synthesize states;
- @synthesize zips;
- -(IBAction)buttonPressed
- {
- NSInteger stateRow = [picker selectedRowInComponent:kStateComponent];
- NSInteger zipRow = [picker selectedRowInComponent:kZipComponent];
- NSString *state = [self.states objectAtIndex:stateRow];
- NSString *zip = [self.zips objectAtIndex:zipRow];
- NSString *title = [[NSString alloc] initWithFormat:@"You selected zip code %@.", zip];
- NSString *message = [[NSString alloc] initWithFormat:@"%@ is in %@", zip, state];
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
- message:message
- delegate:nil
- cancelButtonTitle:@"Ok"
- otherButtonTitles:nil];
- [alert show];
- [alert release];
- [title release];
- [message release];
- }
- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- {
- self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- if (self) {
- // Custom initialization
- }
- return self;
- }
- - (void)dealloc
- {
- [picker release];
- [stateZips release];
- [states release];
- [zips release];
- [super dealloc];
- }
- - (void)didReceiveMemoryWarning
- {
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
- // Release any cached data, images, etc that aren't in use.
- }
- #pragma mark - View lifecycle
- - (void)viewDidLoad
- {
- NSBundle *bundle = [NSBundle mainBundle];
- NSString *plistPath = [bundle pathForResource:@"statelist" ofType:@"plist"];
- NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
- self.stateZips = dictionary;
- [dictionary release];
- NSArray *components = [self.stateZips allKeys];
- NSArray *sorted = [components sortedArrayUsingSelector:@selector(compare:)];
- self.states = sorted;
- NSString *selectedState = [self.states objectAtIndex:0];
- NSArray *array = [stateZips objectForKey:selectedState];
- self.zips = array;
- [super viewDidLoad];
- // Do any additional setup after loading the view from its nib.
- }
- - (void)viewDidUnload
- {
- self.picker = nil;
- self.stateZips = nil;
- self.states = nil;
- self.zips = nil;
- [super viewDidUnload];
- // Release any retained subviews of the main view.
- // e.g. self.myOutlet = nil;
- }
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- // Return YES for supported orientations
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
- }
- #pragma mark -
- #pragma mark Picker Data Source Methods
- -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
- return 2;
- }
- -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
- if (component == kStateComponent)
- return [self.states count];
- return [self.zips count];
- }
- #pragma mark Picker Delegate Methods
- -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
- if (component == kStateComponent)
- return [self.states objectAtIndex:row];
- return [self.zips objectAtIndex:row]; <------ Hier entsteht der Fehler! <------------------------------------<-<-<-<-<-<
- }
- -(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
- if (component == kZipComponent)
- return 90;
- return 200;
- }
- -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
- if (component == kStateComponent) {
- NSString *selectedState = [self.states objectAtIndex:row];
- NSArray *array = [stateZips objectForKey:selectedState];
- self.zips = array;
- [picker selectRow:0 inComponent:kZipComponent animated:YES];
- [picker reloadComponent:kZipComponent];
- }
- }
- @end
Es würde mich sehr freuen, wenn mir jemand helfen könnte.
/edit: Und wenn mir jemand verrät, wie ich den Code besser lesbar hier posten kann wäre ich ihm ebenfalls dankbar!
/edit die Zweite: Hoffe ich hab den Code jetzt in eine angenehm zu lesende Form gebracht. (Danke an Thallius)
MfG
Blaluma
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Blaluma ()