2016-04-10 13 views
0

Uygulamamın dosyalarını iTunes aracılığıyla kaldırdığımda, uygulamayı silip yeniden yükleyene kadar alan hala kullanımda. Uygulamamın belge dizininin içeriğini listelediğimde dosya olmadığını gösterir, dolayısıyla bir çöp kutusu eşdeğerinin olup olmadığını merak ediyorum. Eğer değilse, bu alanı kurtarmak için ne yapmalıyım?Dosyalar uygulamadan kaldırıldı, ancak yine de aynı alanı mı kullanıyorlar?

Bu uygulama, daha sonra uygulamamın yerel depolama alanında kaydettiğim videoları kaydetmek için UIImagePickerController'ı kullanıyor. ITune'ın ("Uygulama, iTunes dosya paylaşımını plist'te destekler") açık olan bu kayıtlar, böylece geliştirme süresi boyunca dosya ekleyebilir ve silebiliriz.

Ben uygulamanın depolama alanı için dosyayı kaydetmek için kullanmak kod:

extension VideoRecorderViewController: UIImagePickerControllerDelegate { 

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

     let mediaType = info[UIImagePickerControllerMediaType] 
     if mediaType!.isEqualToString(kUTTypeMovie as String) { 
      let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! 

      if let mediaURL = info[UIImagePickerControllerMediaURL] as? NSURL { 

       let dateFormatter = NSDateFormatter() 
       dateFormatter.timeZone = NSTimeZone(name: "UTC") 
       dateFormatter.dateFormat = "yyyyMMddHHmmss" 
       let baseFilename = dateFormatter.stringFromDate(NSDate()) 

       // Write out to application's storage area 
       let videoData = NSData(contentsOfURL: mediaURL) 
       let dataPath = documentsUrl.filePathURL?.path?.stringByAppendingPathComponent("\(baseFilename).MOV") 
       videoData?.writeToFile(dataPath!, atomically: true) 
      } 
     } 
    } 
} 

kod ben uygulamanın depolama alanı dosyaları listelemek için kullanıyorum:

let directoryUrls = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsUrl, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions()) 

print ("all files:") 
for entry in directoryUrls { 
    let directoryItem : NSURL = entry 
    print(" ", directoryItem.absoluteString) 
} 

Ayrıca silme çalıştı TemporaryDirectory:

func clearTmpDirectory() { 

    do { 
     let tmpDirectoryFiles = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(NSTemporaryDirectory()) 
     print ("all files:") 
     for entry in tmpDirectoryFiles { 
      print("Removing: ", entry) 
      do { 
       try NSFileManager.defaultManager().removeItemAtPath(entry) 
      } catch let error as NSError { 
       print("error", error) 
      } 
     } 
    } catch let error as NSError { 
     print("error", error) 
    } 
} 

Yanıtlar için etrafa bakmayı denedim, ancak ben Henüz bir şey bulamadım. Neyi gözden kaçırmış olabileceğimi öneren var mı?

BTW Hem CachesDirectory hem de MoviesDirectory öğelerini denetledim. Eski var, ancak boşluk alan ve ikincisi bulunmuyor. Sadece UserDirectory'u da kontrol ettiniz, ancak bu bir nil listesi döndürüyor.

cevap

0

TemporaryDirectory 'un neden temizlendiğini umduğum yerden hala boş vermediğimi (içgörü yine de takdir edilebileceğinden) emin değilim, ancak video çekmeye devam eden kodun saklanması için kodun değiştirilmesine yardımcı oldu. Bir dosya taşıma için writeToFile yaklaşımını değiştirdim, örneğin:

do { 

    try NSFileManager.defaultManager().moveItemAtPath(mediaURL.path!, toPath: dataPath!) 

} catch let error as NSError { 
    print("Error: ", error) 
}