将文件添加到我的 Plist - 我想我快到了

Posted

技术标签:

【中文标题】将文件添加到我的 Plist - 我想我快到了【英文标题】:Added files to my Plist - I think I am almost there 【发布时间】:2012-03-26 08:36:43 【问题描述】:

在我的 ios 应用程序中,我制作了一个应该将数据提交到 plist 的表单。我已经按照此链接中的示例进行了其他操作 -

How to write a data in plist?

现在我认为我所做的一切都是正确的,除了我遇到了一个错误并且它与 ARC 有关 - Xcode 说 - 所以我不确定我使用的示例是否已经过时或者我是否忘记了一些东西。

澄清一下 - 我有带有适当 -(IBAction) 的保存按钮,它没有给出任何错误,所以我认为我在那里没问题。我认为需要调整的一点是将原始 Data.plist 复制到我认为我想用这个来实现的文件夹中。

我已经粘贴了下面发生错误的代码。任何帮助都很棒,如果我可以通过发布更多代码来提供帮助,请告诉我:-)

- (void)viewDidLoad

[super viewDidLoad];
// Do any additional setup after loading the view.


NSString *destPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
destPath = [destPath stringByAppendingPathComponent:@"Data.plist"];

// If the file doesn't exist in the Documents Folder, copy it.
NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath:destPath]) 
    NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
    [fileManager copyItemAtPath:sourcePath toPath:destPath];


// Load the Property List.
savedReadingsDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:destPath];

杰夫干杯

我只是注意到我没有澄清是什么给了我错误:

就是这条线

[fileManager copyItemAtPath:sourcePath toPath:destPath];

错误是:

ARC 问题 - “NSFileManager”没有可见的@interface 声明选择器“copyItemAtPath:toPath:”

【问题讨论】:

【参考方案1】:

您使用了一种不存在的方法。您只需将其更改为

[fileManager copyItemAtPath:sourcePath toPath:destPath error:nil];

除了将nil 作为错误传递之外,您还可以传递您的自定义NSError 对象。请参阅NSFileManager class reference 以查看所有允许的方法

【讨论】:

这似乎摆脱了错误谢谢 - 没有调试我为什么遇到 NSDictionary 问题 - 谢谢:-)【参考方案2】:

NSFileManager 不包含该方法。

[fileManager copyItemAtPath: toPath:];

你应该使用下面的方法,

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

【讨论】:

抱歉澄清一下 - 您的意思是把一个换成另一个吗? @jwk82。是的,我打算改变它。

以上是关于将文件添加到我的 Plist - 我想我快到了的主要内容,如果未能解决你的问题,请参考以下文章

django查看完整性错误

尝试与活动视图控制器共享文件中的 json 字符串

如何让我的 CSS 文本标题淡入淡出?

AWS BeanStalk 不倾向于连接到 AWS RDS

如何每次将新数据保存到我的 plist 文件而不是替换旧数据?

管道通信 C++