对不起,我的英文不好。我来自德国,在解析我的xml文件时遇到了一些问题。我使用最新版本的iOS SDK,包括Xcode。解析XML会导致错误
解析我的XML文件会导致一个众所周知的错误,所谓的“请求为成员‘片’的东西不是一个结构或联合”
看来,我已经忘记了什么东西,我初始化类Delgegate? 如果有人能帮助我,那将会很棒。 这是我得到的唯一错误... .. narrf
下面是一些代码,有关这个问题:
我XMLParser的.h文件中
#import <UIKit/UIKit.h>
@class XMLAppDelegate, Slice;
@interface XMLParser : NSObject <NSXMLParserDelegate>{
NSMutableString *currentElementValue;
XMLAppDelegate *appDelegate;
Slice *aSlice;
}
- (XMLParser *) initXMLParser;
@end
这里的某些部分显示错误的.m文件:
#import "XMLParser.h"
#import "XMLAppDelegate.h"
#import "Slice.h"
@implementation XMLParser
- (XMLParser *) initXMLParser {
[super init];
appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];
return self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"Channel"]) {
//Initialize the array.
appDelegate.slices = [[NSMutableArray alloc] init];
}
else if([elementName isEqualToString:@"Slice"]) {
//Initialize the slice.
aSlice = [[Slice alloc] init];
//Extract the attribute here.
aSlice.sliceID = [[attributeDict objectForKey:@"id"] integerValue];
NSLog(@"Reading id value :%i", aSlice.sliceID);
}
NSLog(@"Processing Element: %@", elementName);
}
在尝试使用我的委托的片数组后,出现错误。
如果有人知道该怎么办,会很好, 这个小东西让我感到恶心。 ^^
嘿,谢谢你的快速回答。 – DevZarak 2010-11-08 16:37:38
我检查了我的委托类的它看起来像我已经声明了切片属性:#进口 @interface XMLAppDelegate:NSObject的 { 的UIWindow *窗口; UINavigationController * navigationController; \t \t NSMutableArray * slices; } @property(nonatomic,retain)IBOutlet UIWindow * window; @property(nonatomic,retain)IBOutlet UINavigationController * navigationController; @property(nonatomic,retain)IBOutlet NSMutableArray * slices; @end –
DevZarak
2010-11-08 16:38:16
看起来不错,无法在注释中格式化代码,但问题仍然存在:编译器不知道您尝试使用属性的对象具有您要使用的属性。或者错误出现在你没有显示的一行代码中(我注意到你问题中的错误信息是“切片”而不是“切片”),或者你实际上没有在真实代码中导入标题,或者你实际上并没有在头文件中声明属性。我现在正倾向#1。请注意,您可以双击构建错误以转到问题代码。 – 2010-11-08 17:04:42