gpt4 book ai didi

objective-c - Objective C 访问 NSBundle

转载 作者:行者123 更新时间:2023-12-03 17:41:16 26 4
gpt4 key购买 nike

我有几个问题和一些问题:

我想做的事:

将 MyApp.app/Assets/Debug/debug.xml 中的文件重命名为 MyApp.app/Assets/Debug/debug_2.xml

1. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"debug" ofType:"xml" inDirectory:@"Assets"]; returns (null)

2. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"debug" ofType:"xml" inDirectory:@"Debug"]; returns (null)

3. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"debug" ofType:"xml"]; WORKS(it finds the file EVEN if its not in the .app its in .app/Assets/Debug.xml)

但是:

    if ([fm fileExistsAtPath:path]) {

NSString *newPath = [[NSBundle mainBundle] pathForResource:@"newfile" ofType:@"xml"];

[fm copyItemAtPath:path toPath:newPath error:NULL];

} else {
NSLog(@"File does not exists");
}

代码总是抛出此错误:

-[NSFileManager copyItemAtPath:toPath:error:]: destination path is nil'

当然该文件不存在,但它的路径与文件路径相同..只是使用了另一个名称:)

我想用相同的路径重命名 .app 文件夹中的文件,只是使用另一个名称。

感谢任何帮助!

同样在上面的示例 1 和 2 中:如果我使用 inDirectory 参数,为什么它会给我空路径?我在构建资源中添加了一个文件夹等......我测试了所有

谢谢

最佳答案

您无法修改应用程序包中的资源。它本质上是只读的。 pathForResource 方法仅返回现有文件的路径。

您必须将所有新文件写入文档或缓存目录。具体将它们放在哪里取决于它们是否可以重新生成以及是否应该备份。请参阅this documentation了解更多信息。

关于objective-c - Objective C 访问 NSBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com