Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy Isn't UITableView Populating From Array
    primarykey
    data
    text
    <p>I'm a noob to iphone development (3rd day in xcode) and I'm having trouble populating a tableview from an NSMutableArray. I'm using <a href="http://mobile.tutsplus.com/tutorials/iphone/iphone-json-twitter-api/" rel="nofollow">this</a> tutorial as my guide and my implementation of it is slightly modified so I can show the table within a pageControl. I'm sure my array is populating with data but after the array is populated it doesn't show in the table. I've tried using the reload data method but that cause my app to crash. Any help is greatly appreciated. </p> <p>MY CODE</p> <p>Header</p> <pre><code>#import &lt;UIKit/UIKit.h&gt; @interface TwitterView : UIViewController &lt;UITableViewDelegate&gt;{ NSMutableArray *tweets; UITableView *twitterTable; } @property (nonatomic, retain) NSMutableArray *tweets; @property (nonatomic, retain) IBOutlet UITableView *twitterTable; @end </code></pre> <p>Implementation</p> <pre><code>#import "TwitterView.h" #import "Tweet.h" //JSON @interface NSDictionary(JSONCategories) +(NSDictionary*)dictionaryWithContentsOfJSONURLString:(NSString*)urlAddress; -(NSData*)toJSON; @end @implementation NSDictionary(JSONCategories) +(NSDictionary*)dictionaryWithContentsOfJSONURLString:(NSString*)urlAddress { NSData* data = [NSData dataWithContentsOfURL: [NSURL URLWithString: urlAddress] ]; __autoreleasing NSError* error = nil; id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&amp;error]; if (error != nil) return nil; return result; } -(NSData*)toJSON { NSError* error = nil; id result = [NSJSONSerialization dataWithJSONObject:self options:kNilOptions error:&amp;error]; if (error != nil) return nil; return result; } @end @implementation TwitterView @synthesize tweets; @synthesize twitterTable; #pragma mark - #pragma mark View lifecycle - (void)viewDidLoad { [super viewDidLoad]; tweets = [[NSMutableArray alloc]init]; //JSON CODE dispatch_async(kBgQueue, ^{ NSData* data = [NSData dataWithContentsOfURL: twitterURL]; [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES]; }); } #pragma mark - #pragma mark Table view data source - (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 [tweets count]; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 80; } // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; } // Configure the cell... NSDictionary *aTweet = [tweets objectAtIndex:[indexPath row]]; cell.textLabel.text = [aTweet objectForKey:@"text"]; cell.textLabel.adjustsFontSizeToFitWidth = YES; cell.textLabel.font = [UIFont systemFontOfSize:12]; cell.textLabel.minimumFontSize = 10; cell.textLabel.numberOfLines = 4; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; cell.detailTextLabel.text = [aTweet objectForKey:@"from_user"]; NSURL *url = [NSURL URLWithString:[aTweet objectForKey:@"profile_image_url"]]; NSData *data = [NSData dataWithContentsOfURL:url]; cell.imageView.image = [UIImage imageWithData:data]; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } #pragma mark - #pragma mark Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. /* &lt;#DetailViewController#&gt; *detailViewController = [[&lt;#DetailViewController#&gt; alloc] initWithNibName:@"&lt;#Nib name#&gt;" bundle:nil]; // ... // Pass the selected object to the new view controller. [self.navigationController pushViewController:detailViewController animated:YES]; [detailViewController release]; */ } #pragma mark - #pragma mark Memory management - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Relinquish ownership any cached data, images, etc that aren't in use. } - (void)dealloc { [tweets release]; [twitterTable release]; [super dealloc]; } //JSON CODE - (void)fetchedData:(NSData *)responseData { //parse out the json data NSError* error; NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData //1 options:kNilOptions error:&amp;error]; tweets = [json objectForKey:@"results"]; NSLog(@"The Tweets %@", tweets); //[twitterTable reloadData];&lt;--Cause app to crash } @end </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload