2011-01-08 7 views
-1

私は本当に感謝の返答と私のxmlパーサメソッドを提出し、最後に問題が言及しています。文字列に変更可能な配列の値をコピーできません

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
currentElement = [elementName copy]; 
if([elementName isEqualToString:@"alluser"]) 
{ 
    objUser = [[Users alloc] init]; 
} 
} 
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
if([elementName isEqualToString:@"username"]) 
{ 
    objUser.userName =[currentElementValue  stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    NSLog(@"%@",objUser.userName); 
} 
if([elementName isEqualToString:@"password"]) 
{ 
    objUser.passWord = [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    NSLog(@"%@",objUser.passWord); 
} 
if([elementName isEqualToString:@"user"]) 
{ 
    [usersArray addObject:objUser]; 


    [objUser release]; 
} 

} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
if(!currentElementValue) 
{ 
    currentElementValue = [[NSMutableString alloc] initWithString:string]; 
    [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
} 
else 
{ 
    [currentElementValue appendString:string]; 
    [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
} 

    if([currentElementValue isEqualToString:@"User"]) 
{ 
    [currentuser appendString:string]; 

} 
if([currentElementValue isEqualToString:@"Pass"]) 
{ 
    [currentpass appendString:string]; 

} 


} 

-(IBAction)backgroundclick:(id)sender 
{ 
[txtpass resignFirstResponder]; 
[txtusername resignFirstResponder]; 

} 


-(IBAction)returnPressed:(id)sender 
{ 
[sender resignFirstResponder]; 
} 



-(IBAction)LoginClicked:(id)sender 
{ 
int cnt=0; 

NSString *currUser = txtusername.text; 
// NSString *passWord = txtpass.text; 

// int i=0; 
for(Users *objUser in usersArray) 
{ 
    /// how to get value and how to compare string... 
} 
    return; 

} 

私の可変配列は、このコードである(usersArray)です。私は配列に解析データを持っていて、特定のアクションが実行されている配列と一致する場合、テキストフィールドの値でユーザー名とパスワードを確認したい。しかし何とか私は文字列にデータをアクセスできません。

+0

お手数ですが、エディタで{}オプションを使用してコードをフォーマットしてください。 – fsaint

+0

コードを読みやすくするためにあなたの投稿をフォーマットしてください。あなたを喜んで助けてくれる人たちを助けます。 :) – Altealice

+1

将来的にはコードを正しくフォーマットして、少なくとも基本的なスペルミスをチェックしてください。あなたが質問をするのに時間を費やすことができない場合、なぜ人々がそれに答えるのを期待していますか? –

答えて

0

あなたが使用して比較することができます)(LoginClickedであなたのループのために...そうちょうど推測、問題が何であるかのように多くの細部を与えていない:

[currUser isEqualToString:objUser.userName] 

またはその他の文字列の比較方法を。しかし、あなたの問題は何か他のものでしょうか?あなたの "パーサー:didStartElement ..."メソッドでは、 "allUser"ではなく "user"要素をチェックすることを意味しましたか?あなたは1つのUsersオブジェクトだけを割り当てますが、多くを解析して配列に挿入しようとします。

+0

まずはお返事ありがとうございます。私はすでに同じことをしようとしています。 objUser.userNameにはすべてのオブジェクトstringが含まれています。 – Sam007

+0

あなたのNSLogステートメントを意味する場合は、各ユーザーが表示されますが、おそらくそれがあなたの考えであるとは思われません。 あなたのdidStartElementメソッドは、* 1つの* Usersオブジェクトを割り当て、次にx> = 0をというタグをこの* one *オブジェクトにパースし、そのオブジェクトをx回配列に追加してx回放します。 xが1より大きい場合、同じオブジェクトを上書きし(論理エラー)、それを何度も解放します(メモリエラー)。 – CRD

関連する問題