2014-09-18 2 views
-1

так, как я в настоящее время у меня есть UITableView установить, _matchCenterArray определяется следующим образом:Как сделать numberOfRowsInSection быть длина массива в массиве

- (void)viewDidAppear:(BOOL)animated 
{ 
    self.matchCenterArray = [[NSArray alloc] init]; 

    // Delay to allow MatchCenter item enough time to be added before pinging ebay 
    [NSThread sleepForTimeInterval:2]; 

    [PFCloud callFunctionInBackground:@"MatchCenter" 
         withParameters:@{} 
           block:^(NSArray *result, NSError *error) { 

            if (!error) { 
             _matchCenterArray = result; 
             [_matchCenter reloadData]; 

             NSLog(@"Result: '%@'", result); 
            } 
           }]; 
} 

result представляет собой массив из массивов, и это обычно выглядит как это:

Result: '(
     { 
     "Top 3" =   (
         { 
       "Image URL" = "http://thumbs4.ebaystatic.com/m/mu05CM1bactFTAWZjesohNg/140.jpg"; 
       "Item URL" = "http://www.ebay.com/itm/Nexus-7-Latest-Model-16GB-Wi-Fi-7in-Black-2nd-Generation-2013-/281443895415?pt=US_Tablets"; 
       Price = "170.0"; 
       Title = "Nexus 7 (Latest Model) 16GB, Wi-Fi, 7in - Black (2nd) Generation 2013"; 
      }, 
         { 
       "Image URL" = "http://thumbs4.ebaystatic.com/m/mjkaCfDBdTQ6S-VTD0kFimA/140.jpg"; 
       "Item URL" = "http://www.ebay.com/itm/Asus-Google-Nexus-7-2nd-Generation-Tablet-7-16GB-Android-4-3-/351173222631?pt=US_Tablets"; 
       Price = "165.59"; 
       Title = "Asus Google Nexus 7 2nd Generation Tablet 7\" 16GB Android 4.3 "; 
      }, 
         { 
       "Image URL" = "http://thumbs4.ebaystatic.com/m/mjIENDWxrHTfcrO_Tmu4-zw/140.jpg"; 
       "Item URL" = "http://www.ebay.com/itm/Google-Nexus-7-16GB-HD-K008-NEXUS7-ASUS-2B16-2nd-Gen-Tablet-Priority-Ship-/301315740555?pt=US_Tablets"; 
       Price = "164.99"; 
       Title = "Google Nexus 7 16GB HD K008 NEXUS7 ASUS-2B16 2nd Gen Tablet Priority Ship"; 
      }, 
         { 
       "Search Term" = "nexus 7 16gb"; 
      } 
     ); 
    }, 
     { 
     "Top 3" =   (
         { 
       "Image URL" = "http://thumbs3.ebaystatic.com/m/mbSjXw608gtlLhYC5GbrbOg/140.jpg"; 
       "Item URL" = "http://www.ebay.com/itm/rolex-datejust-/301318985642?pt=Wristwatches"; 
       Price = "400.0"; 
       Title = "rolex datejust"; 
      }, 
         { 
       "Image URL" = "http://thumbs3.ebaystatic.com/m/mx2eBCLXBEY30DXIIMrm_MQ/140.jpg"; 
       "Item URL" = "http://www.ebay.com/itm/VINTAGE-LADIES-ROLEX-STANDARD-17J-GOLD-FILLED-WATCH-WORKING-NICE-/111466728842?pt=Wristwatches"; 
       Price = "349.99"; 
       Title = "VINTAGE LADIES ROLEX STANDARD 17J GOLD FILLED WATCH WORKING NICE "; 
      }, 
         { 
       "Image URL" = "http://thumbs2.ebaystatic.com/m/mj7-GblU-4Al2X5q0sRvkfw/140.jpg"; 
       "Item URL" = "http://www.ebay.com/itm/Rolex-17000-Quartz-Datejust-BLACK-DIAL-5035-/271610085029?pt=Wristwatches"; 
       Price = "400.0"; 
       Title = "Rolex 17000 Quartz Datejust BLACK DIAL 5035"; 
      }, 
         { 
       "Search Term" = rolex; 
      } 
     ); 
    } 
)' 

для числа секций в моем столе, я его настроить, чтобы взять число «Top 3» массивов, например:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return _matchCenterArray.count; 
} 

Я хочу сделать то же самое для количества строк в каждом разделе, но я не уверен, как выложить синтаксис для этого. Я хочу, чтобы это была длина каждого массива «Top 3». В настоящее время у меня есть только return 3 как импровизированный, но из-за результатов eBay «Топ-3» на самом деле не имеет 3, поэтому я не хочу, чтобы это было так сложно.

ответ

0

Чтобы получить строки в каждом разделе, верните self.matchCenterArray[indexPath.section].count. Это возвращает длину подмассива в этом разделе.

+0

Это будет просто 'раздел ', а не' indexPath.section'. – rmaddy

+0

Это не будет работать, потому что 'self.matchCenterArray [indexPath.section]' возвращает тип 'id', а не тип' NSArray * '. Вам нужно передать его в NSArray *, если вы хотите использовать точечный синтаксис. Или вы можете сказать '[self.matchCenterArray [section] count]'. –

1

Давайте попробуем. Предполагая, что: ваш matchCenterArray бы этой структуры:

_matchCenterArray = @[ @[contentOfFirstTop3], @[contentOfSecondTop3] ] 

Количество секций может быть получен:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return _matchCenterArray.count; 
} 

Число строк:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSArray *currentSectionArray = _matchCenterArray[section]; 
    return currentSectionArray.count; 
} 
+0

Выполнение этого делает каждую секцию только одной строкой. _matchCenterArray структурирован так, как вы предполагали, как вы можете видеть в примере JSON, опубликованном в вопросе. Любая причина, почему это будет сделано? – Ghobs

+0

Ну, если вы посмотрите на свой JSON, результат: это массив словарей, и каждый словарь содержит одну пару ключ/значение, которая является «Top 3» в качестве ключа, и массив словарей снова как значение, поэтому каждый массив в вашем _matchCenterArray должен содержать значение «Top 3». Таким образом, у вас будет структура, о которой я упомянул в своем ответе, и это тот, который имеет больше смысла для меня. –

Смежные вопросы