2016-04-07 7 views
1

Söz konusu paket satın alındığında bir oyunun 12 seviyesi için içeriği indiren bir Uygulama İçi Satın Alma ile bir uygulama kurmaya çalışıyorum.Uygulamada doğru şekilde nasıl taşınır iOS'ta önbellekten indirme dosyalarını satın alın?

İndirilen görüntüleri önbellek klasöründen Belgeler klasörüne doğru şekilde nasıl taşıyacağım konusunda takılıyorum. İşte benim kod şimdiye kadar geçerli:

func processDownload(sender: NSURL) { 

    //Convert URL to String, suitable for NSFileManager 
    var path:String = sender.path! 
    path = path.stringByAppendingPathComponent("Contents") 

    //Makes an NSArray with all of the downloaded files 
    let fileManager = NSFileManager.defaultManager() 
    var files: NSArray! 
    do { 
     files = try fileManager.contentsOfDirectoryAtPath(path) 
    } catch let err as NSError { 
     print("Error finding zip URL", err.localizedDescription) 
    } 

    //For each file, move it to Library 
    for file in files { 

     let pathSource: String = path.stringByAppendingPathComponent(file as! String) 
     let pathDestination: String = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)[0] 

     //Remove destination files b/c not allowed to overwrite 
     do { 
      try fileManager.removeItemAtPath(pathDestination) 
     }catch let err as NSError { 
      print("Could not remove file", err.localizedDescription) 
     } 

     //Move file 
     do { 
      try fileManager.moveItemAtPath(pathSource, toPath: pathDestination) 
      print("File", file, "Moved") 
     }catch let err as NSError { 
      print("Couldn't move file", err.localizedDescription) 
     } 
    } 
} 

Her şey aslında iki do açıklamalardan yazdırıyorsanız hatalar haricinde gayet güzel çalışıyor.

Could not remove file “Library” couldn’t be removed because you don’t have permission to access it. 

Bu sonradan sonraki yazdırmak için açıklama yapmak orijinal çıkarılamadı çünkü bir sonraki hataya neden olur: İlk do blokta aynı adlı varolan herhangi dosyaları kaldırmak için çalışırken, aşağıdaki hatayı alıyorum .

Bunun neden olduğuyla ilgili herhangi bir fikir ve indirilen dosyaları başka bir yere nasıl düzgün kaydedebilirim? Teşekkürler.

+0

hata diyor, belki seni bu izin verilmez tabii 'kütüphane' klasörü !, kaldırmak için çalışıyoruz Bir alt klasörü silmek ister misiniz? Onaylayabilir misiniz – Shripada

+0

Oh şimdi onu görüyorum. Mevcut "dosya" öğesinin zaten orada olup olmadığını görmeye çalışıyordum. – jwade502

cevap

0

Uygun bir çalışma çözümü buldum. Bu kod, indirilen zip klasöründeki tüm öğeleri Library dizinine taşıyacaktır.

func processDownload(sender: NSURL) { 

    //Convert URL to String, suitable for NSFileManager 
    var path: String = sender.path! 
    path = path.stringByAppendingPathComponent("Contents") 

    //Makes an NSArray with all of the downloaded files 
    let fileManager = NSFileManager.defaultManager() 
    var files: NSArray! 
    do { 
     files = try fileManager.contentsOfDirectoryAtPath(path) 
    } catch let err as NSError { 
     print("Error finding zip URL", err.localizedDescription) 
    } 

    //For each file, move it to Library 
    for file in files { 

     let currentPath: String = path.stringByAppendingPathComponent(file as! String) 
     var pathDestination: String = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)[0] 
     pathDestination = pathDestination.stringByAppendingPathComponent(file as! String) 

     //Move file 
     do { 
      try fileManager.moveItemAtPath(currentPath, toPath: pathDestination) 
      print("File", file, "Moved") 
     }catch let err as NSError { 
      print("Couldn't move file", err.localizedDescription) 
     } 
    } 
} 
Şimdi şöyle bu dosyalarla SpriteKit içinde SKTextures yapabilirsiniz

:

var rippleTex = SKTexture(image: UIImage(contentsOfFile: NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)[0].stringByAppendingPathComponent("P06_ripple.png"))!) 
İlgili konular