2011-04-09 18 views
34

Bu kod, Çekirdek Verilerin bir parçasıdır. URLsForDirectory .... yöntemi, iOS < 4'te çalışmaz, bu nedenle arayacağım diğer yöntemleri/nesneleri bilmem gerekir. Gelecekte başvurmak için dokümantasyon da yapardım. aşağıdaki gibiUygulamanın belge dizini URL'si nasıl alınır iPhone

/** 
Returns the URL to the application's Documents directory. 
*/ 
- (NSURL *)applicationDocumentsDirectory 
{ 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 
+0

Bir URL ya da sadece belge yolunu gerekiyor mu? –

cevap

37

Sen NSSearchPathForDirectoriesInDomainsfoundation function aracılığıyla belge yolunu alabilirsiniz Teşekkür:

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentPath = [searchPaths objectAtIndex:0]; 

Bu iOS'ta çalışacak 2+. Bu, desteklenen

let paths = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) 
let documentsURL = paths[0] as! NSURL 

:

amaç-C:

NSArray *paths = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]; 
NSURL *documentsURL = [paths lastObject]; 

Swift

+0

@Andreas Sorun yok. Umarım iyi gider. :-) –

+8

Bunu bir dizge yerine NSURL olarak nasıl edinebilirsiniz? – zakdances

+8

belgelere almak için NSURL: '[NSURL fileURLWithPath: urlString];' dizinin bir dizini belirttiyse dizgenin bir '/' ile bittiğinden emin olun. – wbarksdale

42

alternatif bir çözüm -[NSFileManager URLsForDirectory:inDomains:] yöntem ve geri NSArray gelen yol alma kullanmak olacaktır iOS 4.0+

+0

Neden ObjC'deki 'lastObject' ve Swift'deki [0]' aka 'firstObject'? Sadece ilginin sorulması ... –

+0

'paths.first' isteğe bağlı olarak döner. Basitlik adına, burada abonelik erişimcisi kullanılmaktadır, bu yüzden tip muhafazası ve isteğe bağlı paketlemeyle uğraşmak zorunda kalmamaktayız. –

+0

'- [NSArray firstObject]' ve '- [NSArray lastObject]' özdeş olarak tanımlanır. Uygulama, bir fark üzerinde hiçbir şey söylemiyor. Daha fazla bilgi verebilir misiniz? –

6

İşte Swift 2.2 sürümü :

let paths = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) 
let filePath = paths[0].URLByAppendingPathComponent("filename") 
13

Swift 3

let documentsUrl = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask).first! 
İlgili konular