У меня есть код, который выглядит следующим образом:
NSString *_parse = [NSString stringWithFormat:@"//%@",_user];
NSString *_status = [Parser parse:_parse:@"status"]; //parses the xml
if ([_status isEqualToString:@"1"]) { //error here
}
Приложение аварийно завершает работу, когда проверяет, равны ли строки. Тем не менее, это прекрасно работает, когда я заменяю первую строку кода на это:
NSString *_parse = [NSString stringWithFormat:@"//user1"];
Но это не использует "пользовательский" ivar, который мне нужно использовать, потому что значение может быть другим. Ivar "user" - это строка NSString, объявленная ранее с [self setUser:@"userX"];
Что я должен сделать, чтобы это исправить? Спасибо
РЕДАКТИРОВАТЬ: Вот код, который анализирует XML:
+ (NSString *)dataFilePath:(BOOL)forSave {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentsPath = [documentsDirectory stringByAppendingPathComponent:@"hangout.xml"];
return documentsPath;
}
+ (MyViewController *)parse:(NSString *)nodesForPath:(NSString *)elementsForName {
NSString *filePath = [self dataFilePath:FALSE];
NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath];
NSError *error;
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error];
if (doc == nil) { return nil; }
MyViewController *view = [[[MyViewController alloc] init] autorelease];
NSArray *getVersionInfo = [doc nodesForXPath:nodesForPath error:nil];
for (GDataXMLElement *versionInfo in getVersionInfo) {
NSArray *elm1 = [versionInfo elementsForName:elementsForName];
GDataXMLElement *elm2 = (GDataXMLElement *) [elm1 objectAtIndex:0];
return elm2.stringValue;
}
[doc release];
[xmlData release];
return view;
}