0

UIViewControllerボタンが 1 つとラベルが 1 つのページがあります。プロジェクトにxmlパーサーを追加し、すべてが機能します(コンソールでテストします)。現在、XMLファイルをラベルに接続して、XMLファイルの1つの属性(テスト用)を取得したいと考えています。私の質問は、XML を自分のラベルに接続する方法です。これを実装するためのヒントを教えてください。

私はObjective-Cが初めてです

これが私のコードです:

xml ファイルをラベルに接続する方法を確認したいだけです

 - (void)viewDidLoad
 {
   //appDelegate = (testAppDelegate *)[[UIApplication sharedApplication] delegate];
   label.textColor = [UIColor greenColor];
   // label.text = aBook.title; //it not working, I don't know what should I write to get one   
   // element of xml file to this label or first element of xml file

   [super viewDidLoad];

 }

ここに私のxmlファイルがあります

<?xml version="1.0" encoding="UTF-8"?><Books>

<Book id="1">
    <title>
        Circumference</title>
    <author>Nicholas Nicastro</author>
    <summary>Eratosthenes and the Ancient Quest to Measure the Globe.</summary>
</Book>
<Book id="2">
    <title>Copernicus Secret</title>
    <author>Jack Repcheck</author>
    <summary>How the scientific revolution began</summary>
</Book>
<Book id="3">
    <title>Angels and Demons</title>
    <author>Dan Brown</author>
    <summary>Robert Langdon is summoned to a Swiss research facility to analyze a cryptic symbol
   seared into the chest of a murdered physicist.</summary>
</Book>
<Book id="4">
    <title>Keep the Aspidistra Flying</title>
    <author>George Orwell</author>
    <summary>A poignant and ultimately hopeful look at class and society, Keep the Aspidistra 
 Flying pays tribute to the stubborn virtues of ordinary people who keep the aspidistra
  flying.    
 </summary>
</Book>

必要な場合は、パーサー クラスを次に示します。

- (Presentation1NameXML *) initXMLParser {

appDelegate = (testAppDelegate *)[[UIApplication sharedApplication] delegate];

return self;
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {

if([elementName isEqualToString:@"Books"]) {
    //Initialize the array.
    appDelegate.books = [[NSMutableArray alloc] init];
}
else if([elementName isEqualToString:@"Book"]) {

    //Initialize the book.
    aBook = [[Presentation1Name alloc] init];

    //Extract the attribute here.
    aBook.bookID = [[attributeDict objectForKey:@"id"] integerValue];

    NSLog(@"Reading id value :%i", aBook.bookID);
}

NSLog(@"Processing Element: %@", elementName);
 }

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {

if(!currentElementValue)
    currentElementValue = [[NSMutableString alloc] initWithString:string];
    else
        [currentElementValue appendString:string];

NSLog(@"Processing Value: %@", currentElementValue);

}   

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
 namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

if([elementName isEqualToString:@"Books"])
    return;

//There is nothing to do if we encounter the Books element here.
//If we encounter the Book element howevere, we want to add the book object to the array
// and release the object.
if([elementName isEqualToString:@"Book"]) {
    [appDelegate.books addObject:aBook];
    aBook = nil;
}
else
    [aBook setValue:currentElementValue forKey:elementName];
currentElementValue = nil;
}



@end

編集:

私が使ったとき

 NSLog(@"%@", aBook.title); I got NULL

編集

私が見たいくつかのサンプルでは、​​彼らもこのようなものを持っています

 Book *aBook = [appDelegate.books objectAtIndex:indexPath.row]; 

彼らはtableViewでそれを使用しているのでしかし、私はテーブルを持っていません。

4

1 に答える 1

0
- (void)viewDidLoad
 {
   appDelegate = (testAppDelegate *)[[UIApplication sharedApplication] delegate];
   Book *aBook = [appDelegate.books objectAtIndex:0]; //This will load the first book
   label.textColor = [UIColor greenColor];
   label.text = aBook.title;   
   [super viewDidLoad];

 }

ボタンとラベルを使用してviewControllerをロードする方法について詳しく教えていただければ、より適切な回答を提供できます。

于 2012-10-10T09:34:05.950 に答える