サーバーから XML ファイルを取得して保存し、解析してUIListView
. ブログ投稿の名前は、他の情報とともに XML ファイルに保存されます。Post
データを操作するために、 (ブログ投稿の名前、リンク、コンテンツなどPostList
を格納する) および (NSMutableArray
すべてのPost
オブジェクトを他の情報と共に格納する) 2 つのクラスを作成しました。
以下のループ (私のクラスのgetPosts
メソッドの一部) で、変数が変更されるたびに、以前のループ反復から格納されたすべての値の値が変更されるという問題が発生しています。PostList
aPost
aPost
なぜそれが起こっているのかわかりません。誰でも説明できますか?
TBXMLElement *element = tbxml.rootXMLElement;
TBXMLElement *nextElement = element->nextSibling;
NSLog(@"URLs have been set, preparing for parse/input. [PostList.getPosts]");
//Extracts the content of the XML file and saves it to values in the Post Class
do {
/**********
* This loop goes through the XML file looking for <item> tags that hold information
* about the blog posts. It finds <item> tags and scours them for <title>, <description>,
* <pubdate>, and <link> tags to put into the class variables for the Post Class (aPost).
*********/
NSString *stringElement = [TBXML elementName:element];
NSLog(@"%@", stringElement);
//Sorts through the header junk to find the first <item> tag.
if (![stringElement isEqualToString:@"item"]) {
if (!(element->firstChild)) {
if (!(element->nextSibling)) {
element = nil;
}
element = element->nextSibling;
}
element = element->firstChild;
}
//Once the first <item> tag is found, this code executes.
else {
//Now we move to the first child tag and scour its contents and its siblings
nextElement = [TBXML nextSiblingNamed:@"item" searchFromElement:element];
element = element->firstChild;
do {
//Here it loops over and over until all the parts have been collected.
stringElement = [TBXML elementName:element];
if ([stringElement isEqualToString:@"title"]) {
aPost.name = [TBXML textForElement:element];
}
if ([stringElement isEqualToString:@"description"]) {
aPost.content = [TBXML textForElement:element];
}
if ([stringElement isEqualToString:@"link"]) {
aPost.postURL = [TBXML textForElement:element];
}
if ([stringElement isEqualToString:@"pubdate"]) {
aPost.publicationDate = [TBXML textForElement:element];
}
element = element->nextSibling;
} while (element->nextSibling);
NSLog(@"%@", [self getName:self.aPost]);
[self.postsArray insertObject:aPost atIndex:countingIndex];
countingIndex++;
element = nextElement;
}
} while ((element != nil));