我一直在尝试使用php脚本中的xml输出来填充Xcode中的数组,以便ios可以连接到mysql。但是,尽管mysql中有信息,我仍然为我的数组获取一个空值。这必须意味着我的属性部分或我对xml的解析是错误的,但我真的不知道实际上是错的是什么(没有多少主演它似乎有帮助)。我没有从php或xcode得到任何错误。有什么想法吗?
编辑:我已经按照下面的建议进行了操作,我仍然得到一个空值,虽然我相信它来自我的php ...
- (void)viewDidLoad
{
[super viewDidLoad];
char *cStr = "YES";
NSString *str3 = [NSString stringWithUTF8String:cStr];
NSString *urlString = [NSString stringWithFormat:@"(censored)", _login];
NSXMLParser *Parser = [[[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]] autorelease];
[Parser setDelegate:self];
[Parser parse];
NSDictionary *itemAtIndex =(NSDictionary *)[oneam objectAtIndex:0];
oneam = [[NSMutableArray alloc] init];
if (([[itemAtIndex objectForKey:@"its"]isEqualToString:str3 ])) {
[switch1 setOn:YES animated:YES];
}
else {
[switch1 setOn:NO animated:YES];
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if ( [elementName isEqualToString:@"location"]) {
[oneam addObject:[[NSDictionary alloc] initWithDictionary:attributeDict]];
NSLog(@"The array is %@", oneam);
}
}
这是我的php ...
<?php
$login = "hello";
$dbh = new PDO('(censored)');
$sql = "SELECT oneam FROM login WHERE username = '$login'";
$q = $dbh->prepare( $sql );
$doc = new DOMDocument();
$r = $doc->createElement( "oneam" );
$doc->appendChild( $r );
foreach ( $q->fetchAll() as $row) {
$e = $doc->createElement( "location" );
$e->setAttribute( 'its', $row['oneam']);
$r->appendChild( $e );
}
print $doc->saveXML();
?>
答案 0 :(得分:0)
那么我应该在哪里放置“oneam = [[NSMutableArray alloc] init];”。 我放置的任何地方似乎都声明它是空的或空的......
每当我使用任何类型的数组时,我总是使用延迟初始化,所以如果它为null,则在getter方法中初始化,如下所示:
-(NSMutableArray *)oneam
{
if (!_oneam){
_oneam = [[NSMutableArray alloc] init];
}
return _oneam;
}
当我@synthesize时,我确保它被定义为:
@synthesize oneam = _oneam;
答案 1 :(得分:0)
我不知道你是否可能在其他地方拥有它们,但是你缺少我在做.xml解析时总是使用的两种方法:foundCharacters和didEndElement。我跟着this tutorial set(所有3个视频 - 大约40分钟),在几个不同的实例上使用它后,它真的帮助我理解了如何使用NSXMLParsers。也许尝试按照他的方法,看看是否能为你解决问题。