En aquest tema, aprendrem com gestionar arxius en Objective-C. La gestió d'arxius és una habilitat essencial per a qualsevol desenvolupador, ja que permet emmagatzemar, llegir i manipular dades de manera persistent. Explorarem les operacions bàsiques com la creació, lectura, escriptura i eliminació d'arxius.
Objectius d'Aprenentatge
- Comprendre els conceptes bàsics de la gestió d'arxius.
- Aprendre a crear, llegir, escriure i eliminar arxius en Objective-C.
- Utilitzar les classes i mètodes proporcionats per la llibreria Foundation per gestionar arxius.
Conceptes Bàsics
Classes Clau
- NSFileManager: Aquesta classe proporciona mètodes per treballar amb el sistema de fitxers.
- NSData: Utilitzada per representar dades binàries.
- NSString: Utilitzada per representar dades de text.
Operacions Bàsiques
- Creació d'Arxius
- Lectura d'Arxius
- Escriptura d'Arxius
- Eliminació d'Arxius
Creació d'Arxius
Per crear un arxiu, utilitzarem la classe NSFileManager
. Aquí teniu un exemple pràctic:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *filePath = @"/path/to/your/file.txt"; NSString *content = @"Aquest és el contingut del fitxer."; BOOL success = [fileManager createFileAtPath:filePath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; if (success) { NSLog(@"Arxiu creat amb èxit."); } else { NSLog(@"Error en crear l'arxiu."); } } return 0; }
Explicació
NSFileManager *fileManager = [NSFileManager defaultManager];
: Creem una instància deNSFileManager
.NSString *filePath = @"/path/to/your/file.txt";
: Definim la ruta de l'arxiu.NSString *content = @"Aquest és el contingut del fitxer.";
: Definim el contingut de l'arxiu.BOOL success = [fileManager createFileAtPath:filePath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
: Creem l'arxiu amb el contingut especificat.if (success) { ... } else { ... }
: Verifiquem si l'arxiu s'ha creat correctament.
Lectura d'Arxius
Per llegir un arxiu, utilitzarem la classe NSString
o NSData
. Aquí teniu un exemple pràctic:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *filePath = @"/path/to/your/file.txt"; NSError *error; NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; if (error) { NSLog(@"Error en llegir l'arxiu: %@", [error localizedDescription]); } else { NSLog(@"Contingut de l'arxiu: %@", content); } } return 0; }
Explicació
NSString *filePath = @"/path/to/your/file.txt";
: Definim la ruta de l'arxiu.NSError *error;
: Creem una instància d'NSError
per capturar errors.NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
: Llegim el contingut de l'arxiu.if (error) { ... } else { ... }
: Verifiquem si hi ha hagut algun error en llegir l'arxiu.
Escriptura d'Arxius
Per escriure en un arxiu, utilitzarem la classe NSString
o NSData
. Aquí teniu un exemple pràctic:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *filePath = @"/path/to/your/file.txt"; NSString *content = @"Nou contingut per al fitxer."; NSError *error; BOOL success = [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; if (success) { NSLog(@"Arxiu escrit amb èxit."); } else { NSLog(@"Error en escriure l'arxiu: %@", [error localizedDescription]); } } return 0; }
Explicació
NSString *filePath = @"/path/to/your/file.txt";
: Definim la ruta de l'arxiu.NSString *content = @"Nou contingut per al fitxer.";
: Definim el nou contingut de l'arxiu.NSError *error;
: Creem una instància d'NSError
per capturar errors.BOOL success = [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
: Escrivim el nou contingut a l'arxiu.if (success) { ... } else { ... }
: Verifiquem si l'arxiu s'ha escrit correctament.
Eliminació d'Arxius
Per eliminar un arxiu, utilitzarem la classe NSFileManager
. Aquí teniu un exemple pràctic:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *filePath = @"/path/to/your/file.txt"; NSError *error; BOOL success = [fileManager removeItemAtPath:filePath error:&error]; if (success) { NSLog(@"Arxiu eliminat amb èxit."); } else { NSLog(@"Error en eliminar l'arxiu: %@", [error localizedDescription]); } } return 0; }
Explicació
NSFileManager *fileManager = [NSFileManager defaultManager];
: Creem una instància deNSFileManager
.NSString *filePath = @"/path/to/your/file.txt";
: Definim la ruta de l'arxiu.NSError *error;
: Creem una instància d'NSError
per capturar errors.BOOL success = [fileManager removeItemAtPath:filePath error:&error];
: Eliminem l'arxiu especificat.if (success) { ... } else { ... }
: Verifiquem si l'arxiu s'ha eliminat correctament.
Exercicis Pràctics
Exercici 1: Crear i Llegir un Arxiu
- Crea un arxiu anomenat
notes.txt
amb el contingut "Aquestes són les meves notes.". - Llegeix el contingut de l'arxiu i mostra'l per pantalla.
Solució
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *filePath = @"/path/to/your/notes.txt"; NSString *content = @"Aquestes són les meves notes."; // Crear l'arxiu BOOL success = [fileManager createFileAtPath:filePath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; if (success) { NSLog(@"Arxiu creat amb èxit."); } else { NSLog(@"Error en crear l'arxiu."); } // Llegir l'arxiu NSError *error; NSString *readContent = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; if (error) { NSLog(@"Error en llegir l'arxiu: %@", [error localizedDescription]); } else { NSLog(@"Contingut de l'arxiu: %@", readContent); } } return 0; }
Exercici 2: Escriure i Eliminar un Arxiu
- Escriu el text "Actualització de les notes." a l'arxiu
notes.txt
. - Elimina l'arxiu
notes.txt
.
Solució
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *filePath = @"/path/to/your/notes.txt"; NSString *content = @"Actualització de les notes."; // Escriure a l'arxiu NSError *error; BOOL success = [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; if (success) { NSLog(@"Arxiu escrit amb èxit."); } else { NSLog(@"Error en escriure l'arxiu: %@", [error localizedDescription]); } // Eliminar l'arxiu NSFileManager *fileManager = [NSFileManager defaultManager]; success = [fileManager removeItemAtPath:filePath error:&error]; if (success) { NSLog(@"Arxiu eliminat amb èxit."); } else { NSLog(@"Error en eliminar l'arxiu: %@", [error localizedDescription]); } } return 0; }
Resum
En aquest tema, hem après a gestionar arxius en Objective-C utilitzant les classes NSFileManager
, NSString
i NSData
. Hem explorat les operacions bàsiques de creació, lectura, escriptura i eliminació d'arxius. A més, hem practicat aquests conceptes amb exercicis pràctics per reforçar l'aprenentatge. Ara estem preparats per avançar cap a temes més complexos relacionats amb la gestió de dades.
Curs de Programació en Objective-C
Mòdul 1: Introducció a Objective-C
- Introducció a Objective-C
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Tipus de Dades i Variables
- Operadors i Expressions
Mòdul 2: Flux de Control
Mòdul 3: Funcions i Mètodes
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Sintaxi de Mètodes en Objective-C
- Mètodes de Classe i d'Instància
Mòdul 4: Programació Orientada a Objectes
Mòdul 5: Gestió de Memòria
- Introducció a la Gestió de Memòria
- Comptatge Automàtic de Referències (ARC)
- Retenció i Alliberament Manual
- Millors Pràctiques de Gestió de Memòria
Mòdul 6: Temes Avançats
Mòdul 7: Treballant amb Dades
- Gestió d'Arxius
- Serialització i Deserialització
- Conceptes Bàsics de Xarxes
- Treballant amb JSON i XML
Mòdul 8: Desenvolupament d'Interfícies d'Usuari
- Introducció a UIKit
- Vistes i Controladors de Vista
- Disseny Automàtic
- Gestió de l'Entrada de l'Usuari