- Registriert
- 11.07.12
- Beiträge
- 8
Hallo liebes Forum
Ich habe Ende letzter Woche von einem Kumpel sehr günstig ein älteres MacBook gekauft und dies nun endlich mal ans Startschuss angesehen, um in die iOS App-Entwicklung einzusteigen. Um mich mit Objective-C und Xcode vertraut zu machen, habe ich angefangen ein super anfängertaugliches Video2Brain zu schauen. Kann es jedem der einsteigen möchte nur empfehlen! "Video2Brain Apps mit iOS5 entwicklen". Dort wird glücklicherweise bereits Xcode 4.2 mit iOS5.1 verwendet, somit gibt es auch bereits "Automatic Reference Counting" was gerade mir als Anfänger viel Arbeit erspart. Bin also nun seit rund drei Tagen abends nach der Arbeit ein bisschen am "lernen".
Nun zu meiner Frage:
In refreshWeather stehen unten die beiden Icon Ausgaben. Die Stringausgabe funktioniert, beim Objekt kommt nur "(null)".. Ich weiß aber nicht wieso. Hab schon alles mögliche ausprobiert. Ich bin sogar so rückständig gewesen und habe alle Properties der Klasse "Wettertag" durch manuelle getter und setter ersetzt, sprich viel Schreibarbeit. Leider ohne Erfolg. Innerhalb von XMLParser kann ich das Objekt problemlos verwenden, außerhalb davon ist es aber leer (der Speicherbereich ist aber zugewiesen). Per Breakpoint habe ich auch nicht rausfinden können was das Problem ist. Vermutlich habe ich einfach noch zu wenig Ahnung davon und brauche einen guten Denkanstoß.
Ich werde euch mal alle Klassen auflisten. Mir geht es darum, dass ich das erzeugte Objekt außerhalb von XMLParser weiterverwenden kann, um beispielsweise auf dem View ein Bild damit darzustellen o.ä.
wettertag.h:
#import <Foundation/Foundation.h>
@interface Wettertag : NSObject
@property (nonatomic, retain) NSString *city;
@property (nonatomic, retain) NSString *condition;
@property (nonatomic, retain) NSString *temp;
@property (nonatomic, retain) NSString *humidity;
@property (nonatomic, retain) NSString *icon;
@property (nonatomic, retain) NSString *wind;
@end
wettertag.m:
#import "Wettertag.h"
@implementation Wettertag
@synthesize city = _city, condition = _condition, temp = _temp, humidity = _humidity, icon = _icon, wind = _wind;
@end
xmlparser.h:
#import <Foundation/Foundation.h>
@classWettertag, AppDelegate;
@interface XMLParser : NSObject <NSXMLParserDelegate>
@property (nonatomic, retain) Wettertag *wettertag;
@property (nonatomic, retain) AppDelegate *appDelegate;
@property (nonatomic, retain) NSMutableString *curElement;
-(id) initXMLParser;
@end
xmlparser.m
#import "XMLParser.h"
#import "Wettertag.h"
@implementation XMLParser
@synthesize appDelegate, curElement, wettertag;
- (id) initXMLParser {
self = [super init];
appDelegate = (AppDelegate *)[[UIApplicationsharedApplication] delegate];
returnself;
}
- (void)parserNSXMLParser *)parser didStartElementNSString *)elementName namespaceURINSString *)namespaceURI qualifiedNameNSString *)qName attributesNSDictionary *)attributeDict{
wettertag = [[Wettertagalloc] init];
if ([elementName isEqualToString:@"icon"]) {
wettertag.icon = [NSString stringWithFormat:@"http://www.google.com%@", [attributeDict objectForKey:@"data"]];
//NSLog(@"icon: %@", wettertag.icon);
curElement = [NSStringstringWithFormat:@"%@", wettertag.icon];
}
}
mainviewcontroller.m (auszug):
- (void)refreshWeather {
NSURL *url = [[NSURLalloc] initWithString:@"http://www.google.com/ig/api?weather=oldenburg&hl=en"];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
XMLParser *parser = [[XMLParser alloc] initXMLParser];
[xmlParser setDelegatearser];
BOOL success = [xmlParser parse];
if(success) {
NSLog(@"XML Parsing erfolgreich");
NSLog(@"icon: %@", parser.curElement);
NSLog(@"icon2: %@", parser.wettertag.icon);
}
else {
NSLog(@"XML Parsing fehlgeschlagen!");
}
}
Vielleich sieht ja jemand den Fehler auf anhieb und kann mir ein bisschen helfen. VIelen Dank schonmal!
Edit: Scheinbar entfernt das Forum überflüssige Leerzeichen, wundert euch also nicht wieso z.B. bei einigen Dingen ein Leerzeichen fehlt. Diese sind vorhanden
Ich habe Ende letzter Woche von einem Kumpel sehr günstig ein älteres MacBook gekauft und dies nun endlich mal ans Startschuss angesehen, um in die iOS App-Entwicklung einzusteigen. Um mich mit Objective-C und Xcode vertraut zu machen, habe ich angefangen ein super anfängertaugliches Video2Brain zu schauen. Kann es jedem der einsteigen möchte nur empfehlen! "Video2Brain Apps mit iOS5 entwicklen". Dort wird glücklicherweise bereits Xcode 4.2 mit iOS5.1 verwendet, somit gibt es auch bereits "Automatic Reference Counting" was gerade mir als Anfänger viel Arbeit erspart. Bin also nun seit rund drei Tagen abends nach der Arbeit ein bisschen am "lernen".
Nun zu meiner Frage:
In refreshWeather stehen unten die beiden Icon Ausgaben. Die Stringausgabe funktioniert, beim Objekt kommt nur "(null)".. Ich weiß aber nicht wieso. Hab schon alles mögliche ausprobiert. Ich bin sogar so rückständig gewesen und habe alle Properties der Klasse "Wettertag" durch manuelle getter und setter ersetzt, sprich viel Schreibarbeit. Leider ohne Erfolg. Innerhalb von XMLParser kann ich das Objekt problemlos verwenden, außerhalb davon ist es aber leer (der Speicherbereich ist aber zugewiesen). Per Breakpoint habe ich auch nicht rausfinden können was das Problem ist. Vermutlich habe ich einfach noch zu wenig Ahnung davon und brauche einen guten Denkanstoß.
Ich werde euch mal alle Klassen auflisten. Mir geht es darum, dass ich das erzeugte Objekt außerhalb von XMLParser weiterverwenden kann, um beispielsweise auf dem View ein Bild damit darzustellen o.ä.
wettertag.h:
#import <Foundation/Foundation.h>
@interface Wettertag : NSObject
@property (nonatomic, retain) NSString *city;
@property (nonatomic, retain) NSString *condition;
@property (nonatomic, retain) NSString *temp;
@property (nonatomic, retain) NSString *humidity;
@property (nonatomic, retain) NSString *icon;
@property (nonatomic, retain) NSString *wind;
@end
wettertag.m:
#import "Wettertag.h"
@implementation Wettertag
@synthesize city = _city, condition = _condition, temp = _temp, humidity = _humidity, icon = _icon, wind = _wind;
@end
xmlparser.h:
#import <Foundation/Foundation.h>
@classWettertag, AppDelegate;
@interface XMLParser : NSObject <NSXMLParserDelegate>
@property (nonatomic, retain) Wettertag *wettertag;
@property (nonatomic, retain) AppDelegate *appDelegate;
@property (nonatomic, retain) NSMutableString *curElement;
-(id) initXMLParser;
@end
xmlparser.m
#import "XMLParser.h"
#import "Wettertag.h"
@implementation XMLParser
@synthesize appDelegate, curElement, wettertag;
- (id) initXMLParser {
self = [super init];
appDelegate = (AppDelegate *)[[UIApplicationsharedApplication] delegate];
returnself;
}
- (void)parserNSXMLParser *)parser didStartElementNSString *)elementName namespaceURINSString *)namespaceURI qualifiedNameNSString *)qName attributesNSDictionary *)attributeDict{
wettertag = [[Wettertagalloc] init];
if ([elementName isEqualToString:@"icon"]) {
wettertag.icon = [NSString stringWithFormat:@"http://www.google.com%@", [attributeDict objectForKey:@"data"]];
//NSLog(@"icon: %@", wettertag.icon);
curElement = [NSStringstringWithFormat:@"%@", wettertag.icon];
}
}
mainviewcontroller.m (auszug):
- (void)refreshWeather {
NSURL *url = [[NSURLalloc] initWithString:@"http://www.google.com/ig/api?weather=oldenburg&hl=en"];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
XMLParser *parser = [[XMLParser alloc] initXMLParser];
[xmlParser setDelegatearser];
BOOL success = [xmlParser parse];
if(success) {
NSLog(@"XML Parsing erfolgreich");
NSLog(@"icon: %@", parser.curElement);
NSLog(@"icon2: %@", parser.wettertag.icon);
}
else {
NSLog(@"XML Parsing fehlgeschlagen!");
}
}
Vielleich sieht ja jemand den Fehler auf anhieb und kann mir ein bisschen helfen. VIelen Dank schonmal!
Edit: Scheinbar entfernt das Forum überflüssige Leerzeichen, wundert euch also nicht wieso z.B. bei einigen Dingen ein Leerzeichen fehlt. Diese sind vorhanden
Zuletzt bearbeitet: