创建一个从字符串

问题描述:

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') –

  • 使用writeToFile:atomically:encoding:error:方法的error参数中检索由调用返回的错误,这将有助于调试

  • 使用NSUTF8StringEncoding代替NSStringEncodingConversionAllowLossy(这是不前夕编码!)

  • 如果可能,建议使用NSPropertyListSerialization类操纵PLIST文件序列化。

  • 您可能会发现有用的阅读Property List Programming Guide

+0

谢谢AliSoftware !!!! ---> NSUTF8StringEncoding – Davidin073

NSStringEncodingConversionAllowLossy不是编码,使用类似NSUTF8StringEncoding代替。