2012-08-01 9 views

Odpowiedz

5

Użyj danych podstawowych i NSFetchedResultsController, za pośrednictwem delegowanych metod kontrolera tableview zapełnij tableview z instancji NSFetchedResultsController. Odzwierciedla ona automatyczne kasowanie, dodawanie i wszelkiego rodzaju aktualizacje bazy danych na tableview.

0

Możesz użyć biblioteki ASIHTTPRequest, aby pobrać dane z serwera. Możesz znaleźć informacje na ten temat pod numerem telefonu http://allseeing-i.com/ASIHTTPRequest/

Możesz użyć tego linku, aby uzyskać więcej informacji o widoku tabeli.

W samouczku odsyłacza należy zażądać danych w metodzie viewDidload.

- (void)viewDidLoad { 

    // Request your data on this line. 
    /*NSArray *array = [[NSArray alloc]  initWithObjects:@"Sleepy",@"Sneezy",@"Bashful",@"Happy",@"Doc", 
         @"Grmpy",@"Dopey",@"Thorin",@"Dorin",@"Nori", 
         @"Ori",@"Balin",@"Dwalin",@"Fili",@"Kili",@"Oin",             
         @"Gloin",@"Bifur",@"Bofur",@"Bombur",nil ];*/ 

    self.listData = array; 
    [array release]; 
    [super viewDidLoad]; 
} 

Wszystkie z nich są po prostu używane. Musisz użyć więcej przykładów, aby użyć bardziej złożonej sytuacji. dodam więcej kodu do samouczka, aby pobrać dane z serwera i pokazać na tableview.

2

Rzeczywiście NSFetchedResultsController jest nieco trudne do zrozumienia.

Powinieneś sam spróbować obsługiwać dane UITableView. Spójrz na UITableViewDelegate protocol

Oto kilka kroków, aby przestrzegać:

1) utworzyć klasę, która będzie dziedziczyć UITableViewDelegate i UITableViewDataSource

@interface YourTableViewController: UITableViewController<UITableViewDelegate,UITableViewDataSource> 

2) utworzyć tablicę, która będzie trzymać swoje dane

@property (nonatomic,retain) NSMutableArray *data; 

3) Implementacja tej metody:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     DataObject *d=[data objectAtIndex:indexPath.row]; // selected data, now you can handle it   
    } 

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
     return data.count; 
    } 

    - (UITableViewCell *)tableView:(UITableView *)mtableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
     NSString *[email protected]"CatalogCell";  
     UITableViewCell *cell=(UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:ident];  
     if (cell==nil) {   
      cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ident] autorelease];   
     } 
     DataObject *d=[data objectAtIndex:indexPath.row]; 
     [cell.textLabel setText:d.someField];  
    } 

4) Wybierz jakąś metodę (NSURLConnection, ASIHTTPRequest (przepraszam, tylko 2 hiperłącza dozwolony dla mnie) lub inny), aby uzyskać dane z serwera

-(void) parseData:(NSString *) d { 
    NSArray * parsedData=[self someMethodToParseData:d]; 
    [data setArray:parsedData]; 
    [tableView reloadData];  
} 
3

W zależności od stopnia złożoności modelu i na jaki rodzaj polityki buforowania potrzebujesz, istnieją różne sposoby podłączenia widoku tabeli do zdalnego źródła danych. Będzie tu mnóstwo rzeczy do powiedzenia, ale najlepsze dla ciebie, jeśli jesteś początkującym, jest przyjrzenie się przykładom z Internetu.

Istnieje kilka projektów open source do komunikacji sieciowej, które oferują dobre sposoby i dobre przykłady (w tym kod źródłowy) do obsługi aplikacji uruchamianych przez serwer. Przytoczę dwa wolę:

  • AFNetworking: są przykładowe źródła z tej biblioteki i UITableViewController które mogą dopasować swoje potrzeby
  • RestKit: będzie skręcić przydatna, jeśli chcesz mapować i utrwalania danych serwerowych powrócił do lokalnego modelu. Może to jednak wymagać nieco więcej czasu nauki.

jednak przypomnieć, że w każdym razie trzeba znać podstawy do UITableView i związane z nimi protokoły: UITableViewDelegate i UITableViewDataSource. Dokumentacja jest w porządku, ale możesz nawet rzucić okiem na WWDC 2011 podcast o widokach tabel. Co więcej, jeśli potrzebujesz również utrwalania danych, powinieneś zacząć szukać w Core Data i NSFetchedResultControllers, jak mówią illis i Bogdan, ale wszystko zacznie być nieco trudniejsze.

Powiązane problemy