尽管有mysql条目,NSArray在iOS中仍为空

时间:2012-11-06 16:09:26

标签: php ios xml nsarray

我一直在尝试使用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();
?>

2 个答案:

答案 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。也许尝试按照他的方法,看看是否能为你解决问题。