NSLog(@"Failed to read the array back from disk.");
}
} else {
NSLog(@"Failed to save the array to disk.");
}
ΠΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° writeToFile: atomically:, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ NSArray, ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π»ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΈΠΏΠΎΠ²:
β’ NSString;
β’ NSDictionary;
β’ NSArray;
β’ NSData;
β’ NSNumber;
β’ NSDate.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠΎ Π²Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΎΡΠ½ΠΎΡΡΡΡΡ Π»ΠΈ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΡΡΠΎ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅Π΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Objective-C ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Person, ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π²Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΠΌΠ΅Π½ΠΈ, Π΄ΡΡΠ³ΠΎΠ΅ β ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠ°ΠΊ ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π΅ Π½Π° Π΄ΠΈΡΠΊ? ΠΠΈΠΊΠ°ΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ. ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΠΌΠ°ΡΡΠ°Π»ΠΈΠ½Π³Β». Π ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ iOS ΠΎΠ½Π° ΡΠ΅ΡΠ΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ².
Π‘Π»ΠΎΠ²Π°ΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΌΠ°ΡΡΠΈΠ²Ρ. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΠΌΠ΅Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
NSString *filePath = [NSTemporaryDirectory()
stringByAppendingPathComponent:@"MyFile.txt"];
NSDictionary *dict = @{
@"first name": @"Steven",
@"middle name": @"Paul",
@"last name": @"Jobs",
};
if ([dict writeToFile: filePath atomically: YES]){
NSDictionary *readDictionary = [[NSDictionary alloc]
initWithContentsOfFile: filePath];
/* Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠ°Π²Π½ΠΈΠΌ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ, ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠΉ
Π½Π°ΠΌΠΈ Ρ Π΄ΠΈΡΠΊΠ°, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ΅ */
if ([readDictionary isEqualToDictionary: dict]){
NSLog(@"The file we read is the same one as the one we saved.");
} else {
NSLog(@"Failed to read the dictionary from disk.");
}
} else {
NSLog(@"Failed to write the dictionary to disk.");
}
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π° Π΄ΠΈΡΠΊ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°. ΠΠΎΡΠ»Π΅ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΌΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ Ρ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ΅. Π’Π°ΠΊ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ±Π° ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π½Π° Π΄ΠΈΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ NSString ΠΈ NSArray. Π ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π±Π°ΠΉΡΠΎΠ²? ΠΡΠΎ ΡΠΎΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ Π΅Π³ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ:
char bytes[4] = {'a', 'b', 'c', 'd'};
Π§ΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΠΎΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π±Π°ΠΉΡΠΎΠ² Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΉ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ NSData, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ NSData Π΄Π»Ρ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ Π΄ΠΈΡΠΊΠ° ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈΡ Π½Π° Π΄ΠΈΡΠΊ. ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ NSData, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² NSArray ΠΈ NSDictionary. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈΡ Ρ Π΄ΠΈΡΠΊΠ°:
NSString *filePath = [NSTemporaryDirectory()
stringByAppendingPathComponent:@"MyFile.txt"];
char bytes[4] = {'a', 'b', 'c', 'd'};
NSData *dataFromBytes = [[NSData alloc] initWithBytes: bytes
length: sizeof(bytes)];
if ([dataFromBytes writeToFile: filePath atomically: YES]){
NSData *readData = [[NSData alloc] initWithContentsOfFile: filePath];
if ([readData isEqualToData: dataFromBytes]){
NSLog(@"The data read is the same data as was written to disk.");
} else {
NSLog(@"Failed to read the data from disk.");
}
} else {
NSLog(@"Failed to save the data to disk.");
}
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π» 12.0.
12.3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π½Π° Π΄ΠΈΡΠΊΠ΅
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π² Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° createDirectoryAtPath: withIntermediateDirectories: attributes: error:, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΌΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ NSFileManager, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅:
β (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSString *tempDir = NSTemporaryDirectory();
NSString *imagesDir = [tempDir stringByAppendingPathComponent:@"images"];
NSError *error = nil;
if ([fileManager createDirectoryAtPath: imagesDir
withIntermediateDirectories: YES
attributes: nil
error:&error]){
NSLog(@"Successfully created the directory.");
} else {
NSLog(@"Failed to create the directory. Error = %@", error);
}
self.window = [[UIWindow alloc]
initWithFrame: [[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
API, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΠΎΠΌ NSFileManager, ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠΈΡΠ΅Π³ΠΎ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π½Π° Π΄ΠΈΡΠΊΠ΅ ΡΡΠΈ API ΡΡΠ΅Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΌΠ΅ΡΠΎΠ΄ createDirectoryAtPath: withIntermediateDirectories: attributes: error: ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ°ΡΠ½ΠΎΠ²Π°ΡΡΠΌ, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ Π²ΡΠ΅ ΡΠ°ΠΊ ΠΏΠ»ΠΎΡ ΠΎ. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ:
β’ createDirectoryAtPath β ΠΏΡΡΡ ΠΊ ΡΠΎΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ;
β’ withIntermediateDirectories β Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. ΠΡΠ»ΠΈ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ YES, ΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ images, Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ data, ΠΊΠΎΡΠΎΡΡΠΉ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π²Π»ΠΎΠΆΠ΅Π½ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ tmp, Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ data ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠΎΠ·Π΄Π°Π½, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ tmp/data/images/, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° withIntermediateDirectories Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ YES. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ data, ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ images;
β’ attributes β ΡΠ»ΠΎΠ²Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠΈ Π°ΡΡΠΈΠ±ΡΡΡ Π±ΡΠ΄ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΠ΄Π΅ΡΡ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎ ΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°;
β’ error β Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΎΡΠΈΠ±ΠΊΡ ΡΠΈΠΏΠ° NSObject. ΠΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π»ΡΠ±ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅, ΡΠ°ΠΊ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ (Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ NO), Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π» 12.1.
12.4. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΡ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. ΠΠΊΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ/ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° contentsOfDirectoryAtPath: error:, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ NSFileManager, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ:
β (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSString *bundleDir = [[NSBundle mainBundle] bundlePath];
NSError *error = nil;
NSArray *bundleContents = [fileManager
contentsOfDirectoryAtPath: bundleDir
error:&error];
if ([bundleContents count] > 0 &&
error == nil){
NSLog(@"Contents of the app bundle = %@", bundleContents);
}
else if ([bundleContents count] == 0 &&
error == nil){
NSLog(@"Call the police! The app bundle is empty.");
}
else {
NSLog(@"An error happened = %@", error);
}
self.window = [[UIWindow alloc]
initWithFrame: [[UIScreen mainScreen] bounds]];
// Π’ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π΄Π»Ρ iOS ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΎΡΠ΅Ρ ΡΠΊΠ°ΡΠ°ΡΡ ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° 10 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΠ΅ ΠΈΡ , Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ tmp/images/, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π²ΡΡΡΠ½ΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π½ΠΎΠ²Ρ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ, Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Π² ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅). ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ. ΠΠ°ΠΌ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ° NSFileManager. ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π Π΅ΡΠ΅Π½ΠΈΠ΅Β» Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° contentsOfDirectoryAtPath: error:, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ NSFileManager, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² NSString, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ°ΠΉΠ»Π°ΠΌ, ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΌ ΡΡΡΠ»ΠΊΠ°ΠΌ Π²Π½ΡΡΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½Π΅ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ β ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ ΠΈ Ρ. Π΄. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ contentsOfDirec toryAtURL: includingPropertiesForKeys: options: error:. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ.