Save & Load data.plist

XCode AppleSajnos egyre kevesebb az időm az oldalra de van aki kisegít mindig ha idő szűkében vagyok !
Albi barátunk mint már párszor most is küldött egy cikket nektek, amiben bemutatja , hogy kell adatot menteni plist fájlba és onnan kiolvasni !Olvassátok és tanuljatok 🙂

Save & Load data.plist

Ebben a bemutatóban megmutatom, hogy hogyan tároljuk az adatainkat és olvassuk ki egy plist fájlból.
Hozzunk létre egy új projektet és kezdjünk is hozzá.
Használjunk két textfield-et amibe az adatainkat írjuk és két gombot ami a mentést és a betöltést fogja használni.
Adjunk hozzá a projekthet egy Property List fájlt és nevezzük el Data-nak.
Adjunk hozzá még egy TableViewControllert amiben az adatinkat fogjuk megjeleníteni.

A ViewController.h fáljba illeszük be a következő sorokat.

@property (weak, nonatomic) IBOutlet UITextField *textField1;

@property (weak, nonatomic) IBOutlet UITextField *textField2;

@property (nonatomic, copy) NSString* name;

@property (nonatomic, copy) NSString* description;

-(IBAction)save:(id)sender;

-(IBAction)resignKeyboard:(id)sender;

-(IBAction)dataloadnezet:(id)sender;

Folytassuk a ViewController.m fájlal.

#import “TableViewController.h”

– (IBAction)resignKeyboard:(id)sender

{

[sender resignFirstResponder];

}

-(IBAction)dataloadnezet:(id)sender

{

TableViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@”TableViewController”];

[self presentViewController:detail animated:YES completion:nil];

}

-(IBAction)save:(id)sender

{

self.name = self.textField1.text;

self.description = self.textField2.text;

#define PLIST_NAME @”Data.plist”

[self createPlistCopyInDocuments:PLIST_NAME];

NSString *filePath = [self plistFileDocumentPath:PLIST_NAME];

NSMutableArray *dataArray = [[NSMutableArray alloc] initWithContentsOfFile:filePath];

NSDictionary *data = @{@”megnevezes”:self.name,@”leiras”:self.description};

[dataArray addObject:data];

[dataArray writeToFile:filePath atomically:YES];

}

– (NSString *)plistFileDocumentPath:(NSString *)plistName

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:plistName];

return writablePath;

}

– (void)createPlistCopyInDocuments:(NSString *)plistName

{

BOOL success;

NSFileManager *fileManager = [NSFileManager defaultManager];

NSError *error;

NSString *plistFilePath = [self plistFileDocumentPath:plistName];

success = [fileManager fileExistsAtPath:plistFilePath];

if (success) {

return;

}

NSString *defaultPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:plistName];

success = [fileManager copyItemAtPath:defaultPath toPath:plistFilePath error:&error];

if (!success) {

NSAssert1(0, @”Nem sikerült létrehozni a fájlt’%@’.”, [error localizedDescription]);

}

}

Lépjünk át a TableViewController.h fájlba.

@property (strong, nonatomic) NSMutableArray *content;

-(IBAction)vissza:(id)sender;

Mehetünk a TableViewContoller.m fájlba. és helyezzük be a következő sorokat.

– (void)viewDidLoad

{

[super viewDidLoad];

_content = [[NSMutableArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@”Data” ofType:@”plist”]];

}

– (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

– (void)viewWillAppear:(BOOL)animated
{

[super viewWillAppear:animated];

NSString *filePath = [self plistFileDocumentPath:@”Data.plist”];

NSFileManager *fileManager = [NSFileManager defaultManager];

BOOL exist = [fileManager fileExistsAtPath:filePath];

if (!exist) {

return;

}

NSMutableArray *dataArray = [[NSMutableArray alloc] initWithContentsOfFile:filePath];

_content = dataArray;

[self.tableView reloadData];

}

– (NSString *)plistFileDocumentPath:(NSString *)plistName

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:plistName];

return writablePath;

}

-(IBAction)vissza:(id)sender

{

[self dismissViewControllerAnimated:YES completion:nil];

}

#pragma mark – Table view data source

– (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return [self.content count];
}

– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *CellIdentifier = @”Cell”;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: CellIdentifier];

}
cell.textLabel.text = [[self.content objectAtIndex:indexPath.row] valueForKey:@”megnevezes”];

cell.detailTextLabel.text = [[self.content objectAtIndex:indexPath.row] valueForKey:@”leiras”];at

 return cell;

}
Lépjünk át  a Storyboardba és adjunk hozzá egy Navigation Controllert. A Navigation Controllerbe a Stroryboard ID-hez írjukbe: TableViewController. A TableViewControllernél állítsuk be  a TableViewController osztályt, a navigation bar-ra rakjunk egy Bar Button Item-t és nevezzük el. ‘Vissza’ A Cell rész Style-t állítsuk át Subtitle-re és az Indentifierhez írjuk be a  Cell-t. Kössük össze a kivezetéseket. A vissza gomb és a TableView-et  a delegate és a dataSource-el. Lépjünk át a ViewControllerbe és adjunk hozzá két textField-et és két Buttont. Kössük össze a kivezetéseket és a resingKeyboardot a textFieldekkel a billentyűzet elrejtéséhez.A Data.plist fájlban állítsuk át a Root-ot Array-ra és alapértelmezetre beállíthatunk előre megírt adatokat de nem szükéges a működéshez.

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd“>

<plist version=”1.0”>

<array>

<dict>

<key>megnevezes</key>

<string>alapértelmezett megnevezes</string>

<key>leiras</key>

<string>alapértelmezett leírás</string>

</dict>

</array>

</plist>

Ha mindent helyesen csináltunk akkor kész vagyunk!

Reklámok

Hozzászólás

Kategória: Források

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Google kép

Hozzászólhat a Google felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s