NSFileManager with CoreData

Appstore’daki neredeyse tüm uygulamaların (%70 civarında) Core Data’dan faydalanmaktadır. Core Data basitçe ifade etmek gerekise bir object graph. Core Data’da kaydettiğimiz tüm verileri kullanıcının cihazındaki belirli klasörlere kayıt ederiz. (NSUserDirectory, NSTemporaryDirectory, NSDocumentDirectory) gibi. Ben aşağıdaki örnekte basitçe .txt dosyası kayıt etmeyi okumayı ve silmeyi gösterdim.


/*
        Create .txt files and write some text into it.
     */
    
    // called NSFileManager singleton instance
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
    // get temp directory path
    NSString *tempDirectoryPath = NSTemporaryDirectory();
    
    // getting directory
    NSURL *tempDirectory = [NSURL fileURLWithPath:tempDirectoryPath];
    
    // create new string and loop through
    for(int i = 0; i < 6; i++) {
        
        // new string
        NSString *newString = [NSString stringWithFormat:@"I am string number %d", i];
        
        // create .txt file
        NSURL *saveURL = [tempDirectory URLByAppendingPathComponent:[NSString stringWithFormat:@"string_%d.txt", i]];
        
        // write the text and save it to .txt file.
        [newString writeToURL:saveURL atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }
    
    /*
        Get all .txt files
     */
    
    // get all .txt file
    NSArray *directoryList = [fileManager contentsOfDirectoryAtURL:tempDirectory
                                        includingPropertiesForKeys:nil
                                                           options:NSDirectoryEnumerationSkipsHiddenFiles
                                                             error:nil];
    // to see which file was written to directory!
    for(NSURL *url in directoryList) {
        NSLog(@"url : %@",url);
    }
    
    
    /*
     
        Create new directory to document directory
     */
    
    // Create document directory
    NSURL *documentDirectory = [fileManager URLForDirectory:NSDocumentDirectory
                                                   inDomain:NSUserDomainMask
                                          appropriateForURL:nil
                                                     create:NO
                                                      error:nil];
    
    // creating folders
    NSURL *bigFolder    = [documentDirectory URLByAppendingPathComponent:@"big_folder" isDirectory:YES];
    NSURL *littleFolder = [documentDirectory URLByAppendingPathComponent:@"little_folder" isDirectory:YES];
    
    // create big folder
    [fileManager createDirectoryAtURL:bigFolder withIntermediateDirectories:NO attributes:nil error:nil];
    // create little folder
    [fileManager createDirectoryAtURL:littleFolder withIntermediateDirectories:NO attributes:nil error:nil];
    
    
    // move to item specified target.
    for(int i = 0; i < 6; i++) {
        
        NSURL *desitnationURL;
        NSString *fileName = [NSString stringWithFormat:@"string_%d.txt",i];
        
        NSURL *targetItem = [tempDirectory URLByAppendingPathComponent:fileName isDirectory:NO];
        
        if(i % 2 == 0) {
            desitnationURL = bigFolder;
        } else {
            desitnationURL = littleFolder;
        }
        
        desitnationURL = [desitnationURL URLByAppendingPathComponent:fileName isDirectory:NO];
        
        [fileManager moveItemAtURL:targetItem toURL:desitnationURL error:nil];
    }
    
    /*
        Delete directory
     */
    
    // delete directory
    [fileManager removeItemAtURL:littleFolder error:nil];
    

Daha sonra açıklamalarını da yazacağım ve silinmemesini istediğiniz klasörleri nasıl koruma altına alacağınızı da başka bir yazıya bırakacağım.

Advertisements