0

以下のリンクに従って、ログイン ページの xml を解析していますhttp://yksoftware.blogspot.in/2010/04/iphone-programming-tutorial-xml-login.html

ユーザー名とパスワードのフィールドに入力するたびに、テキストフィールドに正しいユーザー名とパスワードを入力した場合でも、ログインに失敗したと表示されます。次のコードでは、loginPressed メソッドでブレークポイントを保持してチェックすると、for ループに入っていません。

   - (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    users = [[NSMutableArray alloc]init];
    NSURL *xmlURL = [NSURL URLWithString:@"http://www.mailrail.net/sample.aspx?username=naresh&password=reddy"];
    xmlParser = [[NSXMLParser alloc]initWithContentsOfURL:xmlURL];
    [xmlParser setDelegate:self];
    [xmlParser parse];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
    currentElement = [elementName copy];
    if ([elementName isEqualToString:@"User"]) {
        item = [[NSMutableDictionary alloc] init];
        currentUser =[[NSMutableString alloc] init];
        currentPassword =[[NSMutableString alloc] init];
    }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    if ([elementName isEqualToString:@"User"]) {
        [item setObject:currentUser forKey:@"username"];
        [item setObject:currentPassword forKey:@"password"];
        [users addObject:[item copy]];

    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    if ([currentElement isEqualToString:@"username"]) {
        [currentUser appendString:string];
    }
    if ([currentElement isEqualToString:@"password"]) {
        [currentPassword appendString:string];
    }
}

-(IBAction)loginPressed:(id)sender{
    for (NSMutableDictionary *val in users) {                    
        NSMutableString *usrname = [val objectForKey:@"username"];
        NSLog(@"%@",usrname);
        NSMutableString *psswrd = [val objectForKey:@"password"];
        usrname=[usrname stringByReplacingOccurrencesOfString:@"\n" withString:@""];
        usrname=[usrname stringByReplacingOccurrencesOfString:@"\t" withString:@""];
        psswrd=[psswrd stringByReplacingOccurrencesOfString:@"\n" withString:@""];
        psswrd=[psswrd stringByReplacingOccurrencesOfString:@"\t" withString:@""];
        if([usrname isEqualToString:[txtUsername text]]&&[psswrd isEqualToString:[txtPassword text]]){
            [lblLoginStatus setText:@"Login Successful!!"];
            return;
        }
    }
    [lblLoginStatus setText:@"login failed"];
    return;
}

-(IBAction)returnClicked:(UITextField *)sender{
    [sender resignFirstResponder];
}

-(IBAction)clickBackground:(id)sender{

    [txtPassword resignFirstResponder];
    [txtUsername resignFirstResponder];
}

ログインに失敗して戻ります。

前もって感謝します。

4

2 に答える 2

0

最初に、パーサーを使用して xml から何かを解析する方法を解析する必要があります。次に、パーサーを作成した場合、ログイン フォームを使用するのは簡単です。以下は、XML 解析の次のチュートリアルです。詳細が説明されており、ヘルプを得ることができます。

http://www.edumobile.org/iphone/iphone-programming-tutorials/parsing-an-xml-file/

お役に立てれば

于 2012-04-23T11:49:31.717 に答える
0

これだけチェック

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"User"]) {
     NSMutableDictionary *item = [[NSMutableDictionary alloc] init];
    [item setValue:[attributeDict valueForKey:@"username"] forKey:@"username"];
      [item setValue:[attributeDict valueForKey:@"password"] forKey:@"password"];
     [users addObject:item];
}

}

他の2人の代表者を削除して、これを確認してください

于 2012-04-23T11:53:40.450 に答える