2012-03-09 4 views
1

クラスXMLReader(https://github.com/Insert-Witty-Name/XML-to-NSDictionary)に問題があります。Objective-c - XMLReaderが正しく動作しない

webservices = { 
     item = (
        { 
        name= "test1."; 
        }, 
        { 
        name= "test2"; 
        } 
      ); 
     title = Photos; 
    }; 
} 

をしかし、私は一つのアイテムを持っている場合、それは動作しませんです:

私はこの文書を解析するとき、それは完全に

<webservices> 
    <title>Photos</title> 
    <item> 
     <name>test</name> 
    </item> 
    <item> 
     <name>test2</name> 
    </item> 
</webservices> 

プログラム表示を作品の。私はItemのNS配列ではありませんが、nodeという名前のdirectyを持つNSDictionnaryです。

<webservices> 
    <title>Photos</title> 
    <item> 
     <name>test</name> 
    </item> 
</webservices> 

プログラム表示:

webservices = { 
     item = { 
        name= "test"; 
        } 
     title = Photos; 
    }; 
} 

のアイデア?

どうもありがとう:)

答えて

0

普通です - 唯一つの項目がある場合は、配列内の単一の項目をラップする必要はありません。あなたのハンドラは、[webservice valueForKey:@"item"]idとして出力し、それがどのクラスであるかを確認するだけです。 NSArrayでない場合は、それを1つにまとめてから、あなたが呼び出している「プロセス」メソッドに移動してください。

+0

ありがとうございました。それは仕事です:) – Royal

1

は、私は、問題の根本でこの問題を解決するためにコアクラスを介して掘るよこの

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"]]]; 

一日を試してみてください。 ここにバンデードがあります。

+0

代わりにこれを試してくださいhttps://github.com/nicklockwood/XMLDictionary – johndpope

関連する問題