2011-01-08 3 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"요소를 확인 했습니까? 그것은 하나의 Users 객체 만 할당하지만 많은 것을 파싱하여 배열로 삽입하려고 시도하기 때문입니다.

+0

먼저 답장을 보내 주셔서 감사 드리며 이미 동일한 것을 시도하고 있습니다. objUser.userName은 모든 객체 문자열을 포함합니다. – Sam007

+0

NSLog 문을 의미하는 경우 각 사용자를 표시하지만 사용자가 생각하는 내용을 표시하지는 않습니다. didStartElement 메서드는 하나의 * Users 개체를 할당 한 다음 x> = 0 태그를이 * one * 개체에 구문 분석하고 해당 개체를 x 번 배열에 추가 한 다음 x 번 놓습니다. x가 1보다 크면 동일한 객체 (논리 오류)를 덮어 쓰고 너무 많이 놓아 버립니다 (메모리 오류). – CRD

관련 문제