因此,我試圖以編程方式獲取我的應用程序的大小。該應用程序下載大量的音頻文件,並且我試圖檢查當我刪除文件時,應用程序大小按預期降低。到目前爲止,我知道如何做到這一點的唯一方法是通過查看iPad的設置,但那裏的數字似乎總是不正確。如何在Swift中以編程方式獲取iPad/iPhone應用程序的大小
func getAppSize(){
let paths : NSArray = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)
var errorP = NSErrorPointer()
let pathDictionary: NSDictionary = NSFileManager.defaultManager().attributesOfFileSystemForPath(paths.firstObject as String, error: errorP)!
if(pathDictionary.count != 0){
var fileSystemSizeInBytes: Double = pathDictionary.objectForKey("NSFileSystemSize") as Double
var fileSystemSizeInMegaBytes : Double = fileSystemSizeInBytes/1000000
println("Total Space: \(fileSystemSizeInMegaBytes) MB")
}else{
}
}
目前我只是用文件系統Attirbute關鍵的文件系統的大小,我預計我目前的應用程序的大小,但因爲它返回249 GB,其obviouslly閱讀我的整個MacBook文件系統的大小,而不是模擬器的文件路徑。
我擡頭其他屬性鍵的選項,結果發現:
let NSFileSystemSize: NSString!
let NSFileSystemFreeSize: NSString!
let NSFileSystemNodes: NSString!
let NSFileSystemFreeNodes: NSString!
let NSFileSystemNumber: NSString!
不過,我還沒有發現,指定由我的應用程序所採取的實際空間大小的關鍵。我想也許有一種方法可以獲得所有的節點,然後將它們的大小相加,但我不太確定如何做到這一點。
在此先感謝
編輯: 所以包確實出現給我的應用程序的大小,但沒有任何mp3文件的我保存到文件的路徑。我猜測我可能會將它們保存到錯誤的地方或什麼,下面是我將它們保存到應用程序的簡化版本。
//Make HTTP Request Ect... before here...
if(data.length > 1000){
let documentPath = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)
let uuid = NSUUID().UUIDString
let localUrl = uuid + ".mp3"
let destPath = (documentPath[0] as String) + "/" + localUrl
data.writeToFile(destPath, atomically: true)
var error: NSErrorPointer = nil
data.writeToFile(destPath, options: NSDataWritingOptions.DataWritingAtomic, error: error)
if(error != nil){
println("data write error: \(error.memory?.localizedDescription)")
}
}
所以這些數字使一噸多的意義,現在使用的包,它使應用程序大小12.95 MB,但我知道,實際的大小比根據這個(100MB- 500MB)更大多少的該文件已被下載。我在想我可能會把我的文件保存在錯誤的地方。我將編輯我的帖子,以顯示我將它們保存在代碼 – Unome
@Unome哦,如果文件正在下載,那麼它們將不會在應用程序包中找到。我們還必須搜索這些文件夾以獲取完整大小。 –
我添加了更多的代碼來顯示我保存它們的位置,有趣的是我通過.LibraryDirectory將它們保存到文檔路徑,這是我在開始時搜索的內容,所以也許我會將它們保存到錯誤的位置。 – Unome