我对 XMLReader 类 ( https://github.com/Insert-Witty-Name/XML-to-NSDictionary ) 有疑问。
当我解析这个文档时,它工作得很好
<webservices>
<title>Photos</title>
<item>
<name>test</name>
</item>
<item>
<name>test2</name>
</item>
</webservices>
程序显示:
webservices = {
item = (
{
name= "test1.";
},
{
name= "test2";
}
);
title = Photos;
};
}
但是当我有一个项目时,它就不起作用了。我不是 Item 的 NSarray,而是直接带有节点“名称”的 NSDictionnary。
<webservices>
<title>Photos</title>
<item>
<name>test</name>
</item>
</webservices>
程序显示:
webservices = {
item = {
name= "test";
}
title = Photos;
};
}
一个想法?
非常感谢:)
最佳答案
试试这个
XMLReader.m
+(NSArray*)enforceArray:(id)payload{
if ([payload isKindOfClass:[NSArray class]]){
return payload;
}else{
if ([payload isKindOfClass:[NSNull class]] || isEmpty(payload)) return [NSArray array];
return [NSArray arrayWithObject:payload];
}
}
//common.h
static inline BOOL isEmpty(id thing) {
return thing == nil
|| [thing isKindOfClass:[NSNull class]]
|| [thing respondsToSelector:@selector(isEqualToString)]
&& [(NSString*)thing isEqualToString:@"(null)"]
|| ([thing respondsToSelector:@selector(length)]
&& [(NSData *)thing length] == 0)
|| ([thing respondsToSelector:@selector(count)]
&& [(NSArray *)thing count] == 0);
}
NSMutableArray *results = [[NSMutableArray arrayWithArray:[XMLReader enforceArray:[[xmlDictionary objectForKey:@"notifications"] objectForKey:@"notification"]]];
总有一天我会深入研究核心类,从根本上解决这个问题。 同时这里有创可贴。
关于iphone - Objective-c - XMLReader 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9635424/