2011-09-08 149 views
0

plist文件我有這個字符串:創建一個從字符串

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Secciones</key> 
    <array> 
     <dict> 
      <key>Uid</key> 
      <integer>1</integer> 
      <key>DateInsert</key> 
      <date>3911-04-15T09:20:40Z</date> 
      <key>DateModify</key> 
      <date>3911-04-15T09:20:40Z</date> 
      <key>Name</key> 
      <string>Seccion 1</string> 
      <key>Description</key> 
      <string>Esta es la sección 1.</string> 
     </dict> 
     <dict> 
      <key>Uid</key> 
      <integer>2</integer> 
      <key>DateInsert</key> 
      <date>3911-04-15T09:20:40Z</date> 
      <key>DateModify</key> 
      <date>3911-04-15T09:20:40Z</date> 
      <key>Name</key> 
      <string>Seccion 2</string> 
      <key>Description</key> 
      <string>Esta es la sección 2.</string> 
     </dict> 
     <dict> 
      <key>Uid</key> 
      <integer>3</integer> 
      <key>DateInsert</key> 
      <date>3911-04-15T09:20:40Z</date> 
      <key>DateModify</key> 
      <date>3911-04-15T09:20:40Z</date> 
      <key>Name</key> 
      <string>Seccion 3</string> 
      <key>Description</key> 
      <string>Esta es la sección 3.</string> 
     </dict> 
    </array> 
</dict> 
</plist> 

我想創建與此內容的plist文件。我曾嘗試與此:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0]; 

NSString *fileName = [documentsDirectory stringByAppendingPathComponent: @"sec.plist"]; 

NSLog(@"%@",documentsDirectory); 
NSLog(@"%@",fileName); 

//n is my string 
[n writeToFile:fileName 
    atomically:NO   
     encoding:NSStringEncodingConversionAllowLossy 
     error:nil]; 

我的控制檯顯示:

2011-09-08 18:26:59.999 Catalogo-V1[1071:207] /Users/.../Library/Application Support/iPhone Simulator/4.3/Applications/6D96FC16-D6CB-4A03-A0F5-38A0C0C473C7/Documents 

2011-09-08 18:27:00.000 Catalogo-V1[1071:207] /Users/.../Library/Application Support/iPhone Simulator/4.3/Applications/6D96FC16-D6CB-4A03-A0F5-38A0C0C473C7/Documents/sec.plist 

但鴕鳥政策創建任何文件。

+0

那麼,爲什麼不傳入'NSError'指針來找出錯誤呢? :)聲明一個NSError *,然後將它的地址傳遞給「writeToFile」和「NSLog()」錯誤對象。 –

+0

你不能寫文件到iPhone ... – Trevor

+0

(這就是說,我會給你一個提示:你使用的編碼參數可能不是你想要的,你給它一個「編碼轉換「的價值,但它想要一個實際的編碼,像UTF8或其他等等。看看'NSStringEncoding') –

回答

3
  • 使用writeToFile:atomically:encoding:error:方法的error參數中檢索由調用返回的錯誤,這將有助於調試

  • 使用NSUTF8StringEncoding代替NSStringEncodingConversionAllowLossy(這是不前夕編碼!)

  • 如果可能,建議使用NSPropertyListSerialization類操縱PLIST文件序列化。

  • 您可能會發現有用的閱讀Property List Programming Guide

+0

謝謝AliSoftware !!!! ---> NSUTF8StringEncoding – Davidin073

0

NSStringEncodingConversionAllowLossy不是編碼,使用類似NSUTF8StringEncoding代替。