對不起,我的英文不好。我來自德國,在解析我的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