2012-04-13 29 views
0

在我的應用程序中,我使用以下方法從Twitter處理中獲取狀態:http://api.twitter.com/1/statuses/user_timeline/ABCD.xml 但有時候它只是不會' t在我的tableview中顯示任何東西。我正在使用NSXMLParser。 下面的代碼:在我的應用程序中加載twitter數據時出現問題

Class A : 
xmlParser = [[XMLParser alloc] loadXMLByURL:@"http://api.twitter.com/1/statuses/user_timeline/ABCD.xml"]; 

XMLParser.m 


    -(id) loadXMLByURL:(NSString *)urlString 
    { 
     //spinnerControl = [[SpinnerController alloc]init]; 
     //[spinnerControl getAlertViewWithSpinner]; 
     tweets   = [[NSMutableArray alloc] init]; 
     NSURL *url  = [NSURL URLWithString:urlString]; 
     NSData *data = [[NSData alloc] initWithContentsOfURL:url]; 
     parser   = [[NSXMLParser alloc] initWithData:data]; 
     NSString * result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
     NSLog(@"Complete:%@",result); 
     parser.delegate = self; 
     [parser parse]; 
     return self; 
    } 



    -(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
    { 
     if ([elementname isEqualToString:@"status"]) 
     { 
      currentTweet = [Tweet alloc]; 
     } 
    } 

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

      currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    } 


    -(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
    { 
     if ([elementname isEqualToString:@"text"]) 
     { 
      currentTweet.content = currentNodeContent; 
     } 
     if (alreadyHaveDate != 1) 
     { 
      if ([elementname isEqualToString:@"created_at"]) 
      { 
      currentTweet.dateCreated = currentNodeContent; 
       alreadyHaveDate = 1; 
      } 
     } 
     if ([elementname isEqualToString:@"profile_image_url"]) { 

      currentTweet.artistImage = currentNodeContent; 
     } 
     if ([elementname isEqualToString:@"name"]) { 
      currentTweet.artistName = currentNodeContent; 
     } 
     if ([elementname isEqualToString:@"screen_name"]) { 
      currentTweet.screenName = currentNodeContent; 
     } 
     if ([elementname isEqualToString:@"status"]) 
     { 
      [tweets addObject:currentTweet]; 
      alreadyHaveDate = 0; 
     } 
     //[spinnerControl removeAlertView]; 
    } 

Tweet.h : 
@interface Tweet : NSObject 
{ 
    NSString  *content; 
    NSString  *dateCreated; 
    NSString  *artistImage; 
    NSString  *artistName; 
    NSString  *screenName; 
} 

@property (nonatomic, retain) NSString *content; 
@property (nonatomic, retain) NSString *dateCreated; 
@property (nonatomic, retain) NSString *artistImage; 
@property (nonatomic, retain) NSString *artistName; 
@property (nonatomic, retain) NSString  *screenName; 
@end 

Tweet.m 

@implementation Tweet 


@synthesize content, dateCreated,artistImage,artistName,screenName; 


@end 

特別是在當設備在3G上的情況。

回答

0

我沒有看到你的代碼解析函數,但你怎麼知道你實際上從API獲取一些數據?

你說這尤其是在設備在3G上的情況下,所以你可能想驗證你可以到達API並且你沒有空數據,然後再嘗試解析它。

相關問題