2014-11-04 4 views
0

Добрый день,TableView навигации с помощью JSON (данные базы данных)

Я использовал следующий учебник для создания Tableview Навигация: http://www.techotopia.com/index.php/Implementing_TableView_Navigation_using_Xcode_Storyboards, но с этим примером я могу показать статическую информацию.

Теперь мне нужно отображать изображения и тексты из моей базы данных, и мне нужна помощь для этого.

На данный момент это мой CarTableViewController.m

#import "CarTableViewController.h" 
#import "CarTableViewCell.h" 
#import "CarTableViewController.h" 
#import "CarDetailViewController.h" 

@implementation CarTableViewController 

@synthesize carMakes = _carMakes; 
@synthesize carModels = _carModels; 
@synthesize carImages = _carImages; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.carMakes = [[NSArray alloc] 
        initWithObjects:@"Chevy", 
        @"BMW", 
        @"Toyota", 
        @"Volvo", 
        @"Smart", nil]; 

    self.carModels = [[NSArray alloc] 
         initWithObjects:@"Volt", 
         @"Mini", 
         @"Venza", 
         @"S60", 
         @"Fortwo", nil]; 

    self.carImages = [[NSArray alloc] 
         initWithObjects:@"chevy_volt.jpg", 
         @"mini_clubman.jpg", 
         @"toyota_venza.jpg", 
         @"volvo_s60.jpg", 
         @"smart_fortwo.jpg", nil]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [self.carModels count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"carTableCell"; 

    CarTableViewCell *cell = [tableView 
           dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[CarTableViewCell alloc] 
       initWithStyle:UITableViewCellStyleDefault 
       reuseIdentifier:CellIdentifier]; 
    } 

    // Configure the cell... 
    cell.makeLabel.text = [self.carMakes 
          objectAtIndex: [indexPath row]]; 

    cell.modelLabel.text = [self.carModels 
          objectAtIndex:[indexPath row]]; 

    UIImage *carPhoto = [UIImage imageNamed: 
         [self.carImages objectAtIndex: [indexPath row]]]; 

    cell.carImage.image = carPhoto; 

    return cell; 
} 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"ShowCarDetails"]) 
    { 
     CarDetailViewController *detailViewController = 
     [segue destinationViewController]; 

     NSIndexPath *myIndexPath = [self.tableView 
            indexPathForSelectedRow]; 

     detailViewController.carDetailModel = [[NSArray alloc] 
               initWithObjects: [self.carMakes 
                   objectAtIndex:[myIndexPath row]], 
               [self.carModels objectAtIndex:[myIndexPath row]], 
               [self.carImages objectAtIndex:[myIndexPath row]], 
               nil]; 
    } 
} 

@end 

Мне нужно поместить информацию из моей базы данных (автор, дата и изображения) на carMakes, carModels и carImages, чтобы отобразить его. Я могу получить значения из моего PHP-файла с помощью JSON, но мне нужна помощь с NSArray с результатом JSON, потому что я никогда не использовал его.

Как я могу это сделать?

Это мой результат JSON:

[{"id":"15","user":"1","image":"http:\/\/farmaventas.es\/images\/farmaventaslogo.png","date":"2014-09-13"}] 

Спасибо заранее.

+0

У вас ваши данные организованы неправильно. Имейте один массив в каждом разделе, а элементы массивов - словари. Затем вы можете просто разобрать свой JSON и перевернуть его прямо там (хотя обычно лучше иметь рутину, которая копирует данные каждой строки в новый словарь, чтобы немного почистить вещи). –

+0

Можете ли вы показать мне пример, пожалуйста? Спасибо @Hot Licks – JulienKP

ответ

0
NSMutableArray* dataSource = [[NSMutableArray alloc] init]; 
NSMutableDictionary* chevyVolt = [[NSMutableDictionary alloc] init]; 
chevyVolt[@"Make"] = @"Chevy"; 
chevyVolt[@"Model"] = @"Volt"; 
chevyVolt[@"Image"] = @"chevy_volt.jpg"; 
dataSource[0] = chevyVolt; 
NSMutableDictionary* clubman = [[NSMutableDictionary alloc] init]; 
-- etc -- 

Внутри cellForRow--

NSMutableDictionary* cellData = dataSource[[indexPath row]]; 
cell.makeLabel.text = cellData[@"Make"]; 
cell.modelLabel.text = cellData[@"Model"]; 
-- etc -- 

Когда вы получаете ваши данные в формате JSON, вы должны решить, что строка это касается. Если вы каким-то образом знаете, что id 15 для Chevy Volt, вы, вероятно, копируете информацию из соответствующего элемента JSON в словарь для Chevy Volt. (Или, если вы ждете, чтобы получить JSON, чтобы добавить строку Chevy Volt (кажется более вероятной), вы создаете словарь для Volt, как указано выше, и добавляете его в конец массива dataSource с добавленной информацией от JSON.)

+0

Привет Горячие Лики. Я нашел себя в чем-то подобном, и мне нужна помощь в этом, потому что я загружаю информацию с помощью специального PHP-файла, а затем выводя информацию, подобную JulienKP, в формате JSON. Как я могу продолжать? Мне нужно скопировать код? Спасибо @Hot Licks. – Wiraj

+0

Спасибо @Hot Links, но я также хочу знать, что мне нужно сделать после того, как я покажу свой результат JSON, потому что я немного потерялся. Можете ли вы показать мне пример того, как это сделать для моего JSON? – JulienKP

+0

@JulienKP - Я понятия не имею, как вы планируете сопоставлять данные JSON с данными о машине. Технически это не сложно, но вам нужно знать, как вы хотите, чтобы вещи были связаны. –

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