【问题标题】:Data storing in plist works in simulaor but not in device存储在 plist 中的数据在模拟器中有效,但在设备中无效
【发布时间】:2010-04-12 16:48:05
【问题描述】:

我是 iPhone 开发的新手。我已经创建了 plist,例如我以前的 post。它在模拟器中运行良好,但在设备中运行良好。

我正在从 plist 中获取保存的值并检查条件。当我使用模拟器时,它可以工作,但不能在设备中。

【问题讨论】:

  • 需要更多信息。 plist 在哪里?在 Xcode 中作为资源添加?使用 writeToFile 创建?另外,“它不起作用”是什么意思?
  • 这可以关闭,因为寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及重现所需的最短代码它在问题本身。没有明确问题陈述的问题对其他读者没有用处。

标签: iphone plist


【解决方案1】:

(1) 您不能写入 iPhone 资源文件夹中的文件。它是手机安全系统的一部分,可防止恶意代码在安装后更改应用程序。

(2) 如果要将新数据保存到文件中,则需要将文件写入自动生成的文件夹之一。每当在设备或模拟器上安装 iPhone 应用程序时,系统都会创建一组默认文件夹。

(3) 您想写入 Preferences 文件夹或 Documents 文件夹。如果数据涉及应用程序的操作,请将其写入首选项。如果它包含用户数据写入文档。

偏好:

NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES); 
NSString *prefsDirectory = [[sysPaths objectAtIndex:0] stringByAppendingPathComponent:@"/Preferences"];

文件:

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

假设您要读取默认的首选项 plist 文件,进行一些更改,然后将其保存到首选项文件夹。

NSString *plistPath=[[NSBundle mainBundle] pathForResource:@"PlistFileName" ofType:@"plist"];
NSMutableArray *defaultPrefs=[[NSMutableArray alloc] initWithContentsOfFile:plistPath];
//... modify defaultPrefs
NSString *outputFilePath=[prefsDirectory stringByAppendingPathComponent:@"alteredPrefs.plist"];
[defaultPrefs writeToFile:outputFilePath atomically:NO];

【讨论】:

  • 我得先找到死灵法师。这个帖子有六年了。 ;-) 是时候进行一些维护了。
  • 感谢您抽出宝贵时间解决此问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多