2016-04-23 13 views
0
func readWriteData(){ 

     let paths = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true) 
     let cachePath = paths.first 
     //  let bundleName = NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as? String 
     let filePath = NSURL(fileURLWithPath: cachePath!).URLByAppendingPathComponent("cachedProducts.plist").path 
     var isDir : ObjCBool = false 
     var error: NSError? 
     if NSFileManager.defaultManager().fileExistsAtPath(filePath!, isDirectory: &isDir) { 
      var plistArray = NSArray(contentsOfFile: filePath!) 
      print(plistArray)//retrieving stored data 


     }else { 
      do { 
       try NSFileManager.defaultManager().createDirectoryAtPath(filePath!, withIntermediateDirectories: false, attributes: nil) 
       var cachedArray = [AnyObject]() 
       cachedArray.append("Harsh") 
       let cachedProductarray : NSArray = cachedArray 
       cachedProductarray.writeToFile(filePath!, atomically: true) 
       //Storing data to plist 


      } catch let error as NSError { 
       NSLog("\(error.localizedDescription)") 
      } 
     } 
} 

plistArrayを印刷しようとするとnilが返されます。解決策を教えてください。私はキャッシュディレクトリとドキュメントディレクトリを使って試しました。両方とも同じシナリオです読み込みplistの配列データを書き込めません

答えて

0

キャッシュディレクトリは、filePathではなく、cachePathに作成されているはずです。

むしろNSArrayのかなり原始的writeToFile方法を使用するよりも、私は、意味のあるエラーメッセージを取得するNSDatawriteToFile:options:error(まだ良いwriteToURL...)メソッドと組み合わせてNSPropertyListSerializationを使用することをお勧めします。

+0

するvar strの:NSStringの= "asgg" DO { が(アトミックfilePathに!:真、エンコーディング:NSUTF8StringEncoding)str.writeToFileを試してみてください } catchがNSError { 印刷( "\(error.localizedDescription)" とエラーをしましょう) } NSStringを記述しようとしているとき - "cachedProductsssssss.plist"ファイルを "Cache"フォルダに保存できませんでした。 –

+0

パスを印刷して、期待通りのものかどうかを確認してください。 – vadian

関連する問題