【问题标题】:writeToFile fails when writing to desktop写入桌面时 writeToFile 失败
【发布时间】:2012-10-04 05:34:20
【问题描述】:

我在下面有这个代码sn-p。目的是将数组的内容写入 plist 文件。当我运行它时,我没有收到任何错误,一切似乎都很好。问题是该文件没有出现在桌面上。我之前在其他项目中使用过 writeToFile 没有任何问题。它有什么问题?来自瑞士的问候,Ronald Hofmann。

- (IBAction) doActionPlist: (NSButton *)  sender
{
NSString    *fileExt = @".plist";
NSArray *myResultArray = [NSArray arrayWithObjects:
@"Product Number Unlimited Desktop:",
@"4DDP120-UUS001-ANLKR-17C6B",
@"4DDP130-UUS001-ANQEI-1BC12",
@"4USE120-UUS001-80BY1-1EAB0",
@"4USE130-UUS001-6NTUE-11D64",
@"qA0iHnw4EIgOALgAAAQCmUtj",
@"qA0iHnw6EIgAALgAAPUBhByg",
@"4DDP11U00USN001",
@"4DDP13U12USN001",
@"4UCL00U00USN001",
@"4UCL00U00USN010",
@"4UCL11U00USN001",
@"4UCL11U00USN010",
@"4UCL12U11USN001",
@"4UCL12U11USN010",
@"4UCL13U12USN001",
@"4UCL13U12USN010",
@"4USE12U11USN002",
@"4USE13U12USN002",
@"4UWE13U12USN999",
nil];

NSString *thePath  = [NSString stringWithFormat:@"/Users/ronny/Desktop/Testfile%@",fileExt]     ;
[myResultArray writeToFile:thePath atomically:YES]           ;

}

【问题讨论】:

  • 在我看来,您的代码看起来很合理。您是否仔细检查以确保您以“ronny”用户身份运行可执行文件? writeToFile 调用是否返回 YES 或 NO(即,它是否意识到它失败了)?

标签: objective-c nsarray writetofile


【解决方案1】:

不幸的是,调试此调用可能很困难,因为它只返回 YES 或 NO,而没有关于 为什么它成功或失败的更多信息。它没有抛出任何异常的事实并不一定意味着没有任何问题。这只是意味着 NSArray 懒得告诉你。

如果您真的束手无策,您可以尝试使用 NSPropertyListSerialization 将您的 NSArray 转换为 NSData,然后改用 writeToFile:options:error。如果您这样做,请发布错误消息,并且有人应该能够提供更好的调试建议。

【讨论】:

  • 我对这个问题做了进一步的调查,因为我在其他项目中使用了同样的东西,并且在那里工作正常。现在我发现我在这个项目中打开了沙盒,这会阻止文件被写入。关闭沙盒可以工作。有没有办法写到桌面?我不明白它不会使我的 .plist 文件扩展名。相反,它写 Testfile(null)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多