3

iOSがmysqlに接続できるように、Xcodeの配列にphpスクリプトからのxml出力を入力しようとしています。ただし、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();
?>
4

2 に答える 2

0

では、「oneam = [[NSMutableArray alloc] init];」をどこに配置すればよいでしょうか。私が配置したどこでも、空またはnullを宣言しているようです...

任意のタイプの配列を使用するときは常に遅延初期化を使用するため、null の場合は次のようにゲッター メソッドで初期化されます。

-(NSMutableArray *)oneam
{
    if (!_oneam){
        _oneam = [[NSMutableArray alloc] init];
    }

    return _oneam;
}

@synthesize するときは、次のように定義されていることを確認します。

@synthesize oneam = _oneam; 
于 2012-11-06T17:59:32.903 に答える
0

他の場所にそれらがあるかどうかはわかりませんが、.xml 解析を行うときに常に使用していた 2 つのメソッド、foundCharacters と didEndElement がありません。私はこのチュートリアル セット(3 つのビデオすべて - 約 40 分相当) に従い、いくつかの異なるインスタンスで使用した後、NSXMLParsers の使用方法を理解するのに本当に役立ちました。彼の方法に従ってみて、問題が解決するかどうかを確認してください。

于 2012-11-06T18:47:52.170 に答える