Ios UITableView中的问题

Ios UITableView中的问题,ios,xml,uitableview,Ios,Xml,Uitableview,我有一个UITableView,它使用NSMutableArray来解析xml文件 问题:数据已添加到数组中,但在UITableView中不可见 子列表.h @interface SubList:UIViewController <UITableViewDelegate, UITableViewDataSource> { IBOutlet UITableView *List1; NSXMLParser *xmlparser; NSURLConnection *

我有一个
UITableView
,它使用
NSMutableArray
来解析xml文件

问题:数据已添加到数组中,但在
UITableView
中不可见

子列表.h

@interface SubList:UIViewController <UITableViewDelegate, UITableViewDataSource>
{
    IBOutlet UITableView *List1;
    NSXMLParser *xmlparser;
    NSURLConnection *conn;
    NSMutableData *webdata;
    NSString *FolderID;
    NSMutableArray *info;
    NSMutableArray *SubFolderData;
}

@property(nonatomic,retain) NSMutableArray *info;
@property(nonatomic,retain) NSMutableArray *SubFolderData;
@property (nonatomic,retain)NSString *FolderID;
@property(nonatomic,weak)IBOutlet UITableView *List1;
@property (nonatomic,retain) NSString *theXML;

您未输入代理,因此尚未设置这些代理,请使用

[List1 setDelegate:self];
[List1 setDataSource:self];
视图中加载

  • 在界面生成器中选择表视图
  • 选择连接检查器
  • 连接数据源并将其委托给文件所有者
您的表视图连接应如下图所示


Add还检查在调用表视图委托之前是否添加了数组。

嗨,RANA,我们不知道您是如何进行解析的,因为您没有发布任何解析器方法。但根据你的代码,我得到了一些

  • 此[parserObjForData1 UserXMLParser1:webdata]的返回类型;我说的对吗

  • 如果我猜对了,试试这个

  • SubListParser*parserObjForData1=[[SubListParser alloc]init]

    子文件夹数据=[[NSMutableArray alloc]initWithArray:[parserObjForData1 UserXMLParser1:webdata]]

    而不是

     SubListParser *parserObjForData1=[[SubListParser alloc]init];
        SubFolderData=[[[NSMutableArray alloc]init];
        SubFolderData=[parserObjForData1 UserXMLParser1:webdata];
    

    我希望它能对您有所帮助。

    这是sublistparser.m文件

    #import "SubListParser.h"
     #import "DocumentManagementAppDelegate.h"
    
     @implementation SubListParser
      @synthesize mParserArray,ID,URL,SubjectType,Name;
      static int count = 1;
    
    
       -(NSMutableArray *)UserXMLParser1:(NSData *)WebDataRecieved1{
    
    NSXMLParser *xmlparser1=[[NSXMLParser alloc]initWithData:WebDataRecieved1];
    [xmlparser1 setDelegate:self];
    BOOL success=[xmlparser1 parse];
    NSLog(@"%i",success);
    return listset1;
    
      }
       - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
    NSLog(@"NSXMLParser ERROR: %@ - %@",  [parseError localizedDescription], [parseError   localizedFailureReason]);
     }
    
      - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
       namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
       attributes:(NSDictionary *)attributeDict 
     {  
    currentElementValue =[elementName copy];
    if([elementName isEqualToString:@"FileFolderDetails"]){
        item=[[NSMutableDictionary alloc]init];
       Name=[[NSMutableString alloc]init];
        SubjectType=[[NSMutableString alloc]init];
        URL=[[NSMutableString alloc]init];
       // NSLog(@"%@",Name);
    }
    
    
    //if ([elementName isEqualToString:@"FileFolderDetails"]) {
    //  NSLog(@"Inside FolderName");
      //  SUBLIST=[[SubListParser alloc]init];
      //  SUBLIST=[attributeDict objectForKey:@"Name"]; 
    
    //}
     }
    
     - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    //NSLog(@"%@",string);
    if(count){
        listset1=[[NSMutableArray alloc]initWithCapacity:20];
        count=0;
        Urlarray = [[NSMutableArray alloc]initWithCapacity:20];
    }
    
    
    if ([currentElementValue isEqualToString:@"Name"]) {
        [Name appendString:string];
        [listset1 addObject:[NSString stringWithFormat:@"%@",Name]];
            //    NSLog(@"%@",listset1);
    }
    
    if ([currentElementValue isEqualToString:@"URL"]) {
        [URL appendString:string];
        [Urlarray addObject:[NSString stringWithFormat:@"%@",URL]];
        NSLog(@"Url Array :%@",Urlarray);
    
    }
    
    
     }
      - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;
    {
    if([elementName isEqualToString:@"FileFolderDetails"]){
    [item setObject:Name forKey:@"Name"];
    [item setObject:SubjectType forKey:@"Type"];
    [item setObject:URL forKey:@"URL"];
    [users addObject:item];
    }
    
    
    }
    
    
      @end
    

    1.检查您的代理是否已设置。2.如果它们被调用.in.h,您说过要用conform to delegate编译这个类。但是您需要通过拖放或[tv setDelegate:self]etcin viewDidLoad方法设置在所有tableview委托方法中编写一个nslog,并检查它是否打印出来。发布一些相关代码。i、 e.XML解析代码,您正在填充
    数据源
    数组。我以前做过,但它不起作用,我又做了一次,但它仍然不起作用。@RANA:您是否已钩住列表1以更正tableView。并使用
    @
    来推荐我,这样我就可以得到通知。我没有名声来标记你:我在我的xib文件中有相同的连接在NumberOfRowsin处放置一个断点,记录[SubFolderData count]/2,在此处发布日志消息……嗨,拉娜,如果你仔细观察上述代码,你可能会发现问题,请参阅下面的代码-(void)解析器:(NSXMLParser*)解析器查找字符:(NSString*)字符串{//NSLog(@“%@”,string);if(count){listset1=[[NSMutableArray alloc]initWithCapacity:20];count=0;Urlarray=[[NSMutableArray alloc]initWithCapacity:20];}if([currentElementValue IsequalString:@“Name”]){[Name appendString];[listset1 addObject:[NSString stringWithFormat:@“%@”,Name]];//NSLog(@“%@”,listset1);}如果你看到Find characters方法,你在里面初始化listset1数组,很明显,数组会不断变清晰,所以即使你在数组中添加了任何东西,它也不会被添加。正因为如此,你不能在tableview中获取数据。现在为了避免这种情况,你必须在UserXMLPa中初始化listset1数组rser1方法不在foundcharacters方法中。请提前感谢。
     SubListParser *parserObjForData1=[[SubListParser alloc]init];
        SubFolderData=[[[NSMutableArray alloc]init];
        SubFolderData=[parserObjForData1 UserXMLParser1:webdata];
    
    #import "SubListParser.h"
     #import "DocumentManagementAppDelegate.h"
    
     @implementation SubListParser
      @synthesize mParserArray,ID,URL,SubjectType,Name;
      static int count = 1;
    
    
       -(NSMutableArray *)UserXMLParser1:(NSData *)WebDataRecieved1{
    
    NSXMLParser *xmlparser1=[[NSXMLParser alloc]initWithData:WebDataRecieved1];
    [xmlparser1 setDelegate:self];
    BOOL success=[xmlparser1 parse];
    NSLog(@"%i",success);
    return listset1;
    
      }
       - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
    NSLog(@"NSXMLParser ERROR: %@ - %@",  [parseError localizedDescription], [parseError   localizedFailureReason]);
     }
    
      - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
       namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
       attributes:(NSDictionary *)attributeDict 
     {  
    currentElementValue =[elementName copy];
    if([elementName isEqualToString:@"FileFolderDetails"]){
        item=[[NSMutableDictionary alloc]init];
       Name=[[NSMutableString alloc]init];
        SubjectType=[[NSMutableString alloc]init];
        URL=[[NSMutableString alloc]init];
       // NSLog(@"%@",Name);
    }
    
    
    //if ([elementName isEqualToString:@"FileFolderDetails"]) {
    //  NSLog(@"Inside FolderName");
      //  SUBLIST=[[SubListParser alloc]init];
      //  SUBLIST=[attributeDict objectForKey:@"Name"]; 
    
    //}
     }
    
     - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    //NSLog(@"%@",string);
    if(count){
        listset1=[[NSMutableArray alloc]initWithCapacity:20];
        count=0;
        Urlarray = [[NSMutableArray alloc]initWithCapacity:20];
    }
    
    
    if ([currentElementValue isEqualToString:@"Name"]) {
        [Name appendString:string];
        [listset1 addObject:[NSString stringWithFormat:@"%@",Name]];
            //    NSLog(@"%@",listset1);
    }
    
    if ([currentElementValue isEqualToString:@"URL"]) {
        [URL appendString:string];
        [Urlarray addObject:[NSString stringWithFormat:@"%@",URL]];
        NSLog(@"Url Array :%@",Urlarray);
    
    }
    
    
     }
      - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;
    {
    if([elementName isEqualToString:@"FileFolderDetails"]){
    [item setObject:Name forKey:@"Name"];
    [item setObject:SubjectType forKey:@"Type"];
    [item setObject:URL forKey:@"URL"];
    [users addObject:item];
    }
    
    
    }
    
    
      @end