How to use plist in iphone ?

This is the example of a plist (Property list) to get a feel for how its works.

Step 1: Create a new Xcode project using View based application template.

Step 2: Double click .xib file to open the file in interface Builder.Drop a table view onto the view window. Then click connections inspector,and connect the dataSource and delegate connections to the File’s Owner icon. Next, select table view,and click attributes inspector. Change the table view’s Style to Grouped. After doing that,save,and return to Xcode.

Step 3: This project needs a fair amount of data to do its thing. So we create  a   property list and add it to Resource folder. Once it’s added to the project ,single click .plist its just look like (below figure 1).It’s a property list that contains a dictionary ,with one entry for each letter of the alphabet.

Figure 1: The sortednames.plist property list file.

Step 4: Single click the ViewController.h file and add both an NSDictionary and an NSArray instance variable and corresponding property declarations. The dictionary will hold all of our data. The array will hold the sections sorted in alphabetical order . And we also need to conform the class to the UITableViewDataSource and UITableViewDelegate protocols:

#import <uikit/UIKit.h>

@interface SectionsViewController : UIViewController
  <uitableViewDataSource,UITableViewDelegate>
{
	NSDictionary *names;
	NSArray *keys;
}
@end


Step 5: In our tableView:cellForRowAtIndexPath:method,we have to extract both the section and row from the index path and use that to determine which value to use. And the other method, tableView:titleFoeHeaderInSection allows you to specify an optional header value for each section.

  -(UITableViewCell *)tableView:(UITableView *)tableView
  cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
   NSUInteger section = [indexPath section];
   NSUInteger row = [indexPath row];

   NSString *key = [keys objectAtIndex:section];
   NSArray *nameSection = [names objectForKey:key];

   static NSString *SectionsTableIdentifier = @"SectionsTableIdentifier";

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

  }

  cell.text = [nameSection objectAtIndex:row];
  return cell;
 }

  -(NSString *)tableView:(UITableView *)tableView
   titleForHeaderInSection:(NSInteger)section
  {
    NSString *key = [keys objectAtIndex:section];
    return key;

  }



Figure 2: A grouped table with multiple sections.

You can downloaded SourceCode from here Sections

  • Rick
  • January 14, 2010
  • iOS

About the Author

Leave a Reply 17 comments

Raj - February 6, 2010 Reply

Sorry. I’m a newbie. I can’t see the code where the dictionary or array loads the data from the plist. Which line is that?

Josh Highland - May 1, 2010 Reply

your zip file is missing the plist file. could you please email it to me?

Siddhpura Dharmesh R. - May 28, 2010 Reply

I want to know about how to edit plist which the user created as shown in the above example(plist containing of A-Z keys)? So please can you help me for that..

Sushant - May 29, 2010 Reply

If you want to edit pList, just open the pList and double click on the content (whatever you want to display) and change the name of the content.

Alex - June 23, 2010 Reply

this is exactly what i was trying to do however im not able to get the search bar to work. could you please help me??

IHSAN KHAN - July 6, 2010 Reply

Any one who needs a plist which is missing in this project.
just email me i will send it.

Sushant - July 6, 2010 Reply

I have uploaded new Source Code, Now you can download the pList from the Source Code.

RHB - July 25, 2010 Reply

I have been lloking for days for an example of how to use a plist. My array is 254 x 19 (array of arrays)

Can you explain how to put the sample files into xcode to run.

THX

dhineshbabu - March 23, 2011 Reply

thanks for ur program now i can under stand the plist program correctly . thanks a lot yar

dhineshbabu - March 23, 2011 Reply

i need a program that to get the text from textbox and to check whether the data entered in the textbox is in plist. if the data present in the plist it will print it is availble (in label or in message button). please send us the code

pallavi - May 27, 2011 Reply

I have done with displaying plist in tableview. But i want to add and delete items from plist in tableview. How to do it. Please reply i am waiting……

roberto - June 13, 2012 Reply

can you email me the source code and plist file for this project? Thanks a lot

suresh - June 18, 2012 Reply

cn u xplain plist concept in ios

Mina - July 2, 2012 Reply

This is the kind of search I need. But the source code doesn’t seem to work. I’m running it in an iPhone simulator. Everything works but the search.

Leave a Reply: