2015-07-24 4 views
3

Мне нужно получить размер видеофайла с помощью NSFileManager. Я могу получить URL-адрес моего файла. Я нашел код Objective-C, который кажется рабочим, но мой проект разработан с помощью Swift. Как написать следующий код с помощью Swift?Получение размера файла с помощью NSFileManager

NSURL *videoUrl=(NSURL*)[info objectForKey:UIImagePickerControllerMediaURL]; 

//Error Container 
NSError *attributesError; 
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[videoUrl path] error:&attributesError]; 
NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize]; 
long long fileSize = [fileSizeNumber longLongValue]; 

ответ

8

Попробуйте этот код:

let videoUrl = info[UIImagePickerControllerMediaURL] as! NSURL 

var attributesError: NSError? 
let fileAttributes = NSFileManager.defaultManager().attributesOfItemAtPath(videoURL.path!, error: &attributesError)! 
let fileSizeNumber = fileAttributes[NSFileSize] as! NSNumber 
let fileSize = fileSizeNumber.longlongValue 
+0

Спасибо, что работает! – user1951145

+2

Btw, с Swift 2.1, обработка ошибок отличается: do { let fileAttributes = try self.fileManager.attributesOfItemAtPath (logFilePathURL.path!) let fileSizeNumber = fileAttributes [NSFileSize] as! NSNumber let fileSize = fileSizeNumber.longLongValue } catch_ as NSError {} – elsurudo

9

Для СВИФТ 2 раза:

let videoUrl = info[UIImagePickerControllerMediaURL] as! NSURL 
do{ 
    let fileAttributes = try NSFileManager.defaultManager().attributesOfItemAtPath(videoURL.path!) 
    let fileSize = fileAttributes[NSFileSize]  
} 
catch let err as NSError{ 
    //error handling 
} 
0

Для СВИФТ 3 попытки:

let fileSize = try! FileManager.default.attributesOfItem(atPath: "/bin/bash")[FileAttributeKey.size] as! Int 

или даже лучше:

let fileSize = (try! FileManager.default.attributesOfItem(atPath: "/bin/bash")[FileAttributeKey.size] as! NSNumber).uint64Value 
+0

В нашем приложении мы использовали атрибут NSFileSize для UInt64. Он отлично работал на наших машинах разработки и на тестовых устройствах. Однако он не работал на нашем сервере сборки, который выполнял ту же самую настройку XCode. Там нам пришлось отдать атрибут NSNumber, а затем получить его свойство uint64. –

Смежные вопросы