2010-08-17 13 views
36

Mam jeden plik o nazwie a.caf w katalogu dokumentów. Chciałbym zmienić jego nazwę, gdy użytkownik wpisze zmienną UITextField i naciśnie zmiany (tekst wprowadzony w UITextField powinien być nową nazwą).Jak zmienić nazwę pliku przy użyciu NSFileManager

Jak mogę to zrobić?

+1

To pytanie odpowie na twoje: http://stackoverflow.com/questions/873522/rename-file-in-cocoa –

Odpowiedz

82

Można użyć moveItemAtPath.

NSError * err = NULL; 
NSFileManager * fm = [[NSFileManager alloc] init]; 
BOOL result = [fm moveItemAtPath:@"/tmp/test.tt" toPath:@"/tmp/dstpath.tt" error:&err]; 
if(!result) 
    NSLog(@"Error: %@", err); 
[fm release]; 
13

Aby utrzymać to pytanie up-to-date, jestem dodanie Swift wersji, a także:

let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String 
let originPath = documentDirectory.stringByAppendingPathComponent("/tmp/a.caf") 
let destinationPath = documentDirectory.stringByAppendingPathComponent("/tmp/xyz.caf") 

var moveError: NSError? 
if !manager.moveItemAtPath(originPath, toPath: destinationPath, error: &moveError) { 
    println(moveError!.localizedDescription) 
} 
+0

to nie działa w szybkim 3,0 –

+0

ja nie zachowałem go-to- data. Dzięki za opinie, zaktualizuję odpowiedź. – Michal

+2

Brakuje 'let manager = NSFileManager()' – boidkan

0

Pracował na Swift 2,2

func moveFile(pre: String, move: String) -> Bool { 
    do { 
     try NSFileManager.defaultManager().moveItemAtPath(pre, toPath: move) 
     return true 
    } catch { 
     return false 
    } 
} 
2

To jest funkcja od Daehan Park do konwersji na Swift 3:

func moveFile(pre: String, move: String) -> Bool { 
    do { 
     try FileManager.default.moveItem(atPath: pre, toPath: move) 
     return true 
    } catch { 
     return false 
    } 
} 
Powiązane problemy