Передайте NSMutableArray из файла делегата в UITableView из UIViewController - PullRequest
0 голосов
/ 13 сентября 2011

Я делаю следующее:

myAppDelegate file

Я анализирую XML-файл и устанавливаю его содержимое на NSMutableArray * catalogue, таким образом:

NSMutableArray * catalogue;
    NSMutableDictionary * item;

    NSString * currentElement;
    NSMutableString *currentName, *currentUrl;

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{     
    //NSLog(@"ended element: %@", elementName);
    if ([elementName isEqualToString:@"catalog"]) {
        // save values to an item, then store that item into the array...
        [item setObject:currentName forKey:@"name"];
        [item setObject:currentUrl forKey:@"url"];
        [catalogue addObject:[item copy]];
    }
    }

myUiViewController class

- (void)viewDidLoad
{
    [super viewDidLoad];
    nameCatalog = [myAudiAppDelegate sharedAppDelegate].catalogue;
    NSLog(@"noul sir format %@", nameCatalog);

}

Вот как выглядит мой nameCatalog:

 {
    name = "Audi TT Coup\U00e9";
    url = "http://host_server/uploads/modeles_pdf/43_TT_Coupe_TT_Roadster_Catalogue_Tarifs_20110428.pdf";
},
    {
    name = "Audi TT Roadster";
    url = "http://host_server/uploads/modeles_pdf/42_TT_Coupe_TT_Roadster_Catalogue_Tarifs_20110428.pdf";
}

Чего я не знаю, так это ... как мне получить значение имени оттуда, чтобы поместить его в tableView?

Это мой метод:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    // Set up the cell...
    cell.text = [nameCatalog objectAtIndex:indexPath.row];
    return cell;
}

Но я получаю следующую ошибку: T erminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary isEqualToString:]: unrecognized

Как мне получить доступ nameCatalog? Спасибо

Ответы [ 3 ]

4 голосов
/ 13 сентября 2011

Следующее решение вашей проблемы ...

    cell.textLabel.text = [[nameCatalog objectAtIndex:indexPath.row] valueForKey:@"name"];

nameCatalog - это ваш NSMutableArray. [nameCatalog objectAtIndex: indexPath.row] возвращает NSMutableDictionary. И вы должны получить значение, используя valueForKey из этого.

3 голосов
/ 13 сентября 2011

используйте это

cell.textLabel.text=[[catalogue objectAtIndex:indexPath.row] valueForKey:@"name"];
3 голосов
/ 13 сентября 2011
int index = indexPath.row;
NSString* name = [[nameCatalog objectForKey:@"name"]objectAtIndex:index];
NSString* URL = [[nameCatalog objectForKey:@"url"]objectAtIndex:index];

, если nameCatalog является массивом словаря, то

int index = indexPath.row;
NSString* name = [[nameCatalog objectAtIndex:index]objectForKey:@"name"];
NSString* URL = [[nameCatalog objectAtIndex:index]objectForKey:@"url"];
...