【问题标题】:accessing a file using [NSBundle mainBundle] pathForResource: ofType:inDirectory:使用 [NSBundle mainBundle] pathForResource: ofType:inDirectory: 访问文件
【发布时间】:2011-09-09 22:26:22
【问题描述】:

我在名为TextFiles 的文件夹中添加了一个文件paylines.txt,该文件位于Xcode 中我的iOS 项目的Resources 文件夹中。

这是我用来访问文件的代码:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"paylines" ofType:@"txt" inDirectory:@"TextFiles"];
NSLog(@"\n\nthe string %@",filePath);

代码打印:

2011-06-07 14:47:16.251 slots2[708:207] 

the string  (null)

【问题讨论】:

    标签: objective-c ios xcode filepath nsbundle


    【解决方案1】:

    我也遇到了同样的问题。 我找到的解决方案是(在 xcode 4.x 中):

    转到:目标 -> “构建阶段” -> “复制捆绑资源” 然后在此处添加该特定文件。 如果该文件已添加,请将其删除并重新添加。

    清理项目并运行。它有效。 :)

    【讨论】:

    • 对我来说文件在那里,所以我删除它并再次添加它,清理并且它工作!
    • 就我而言,不知何故,我的应用程序的“添加到目标”复选框未选中;直到我删除文件然后再次添加它才意识到这一点。糟糕!
    • 强调来自其他人和其他类似答案的 cmets:有时您这样做是正确的,但它仍然不起作用。如果是这样,请确保从该项目窗格(BuildPhases/Bundle Resources)中的包中删除该文件,然后重新添加它。然后项目>清洁。这终于对我有用了!
    • 是的,还必须删除它并重新添加才能使其正常工作。谢谢。
    【解决方案2】:

    我发现我犯的错误是我在项目中添加了一个组,而不是添加更多的真实目录instructions

    【讨论】:

    • 是的,正如链接中所说:在弹出窗口中,确保选择“为任何添加的文件夹创建文件夹引用”而不是“为任何添加的文件夹创建组”
    【解决方案3】:

    当我将文件拖入时,默认情况下“添加到目标”框似乎未选中。如果我不勾选它,那么我已经描述了问题。通过删除文件然后将它们拖回来修复它,但请确保勾选“添加到目标”。

    【讨论】:

      【解决方案4】:

      试试这个,它对我有用。

      NSString *str = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"paylines.txt"];  
      

      模拟器用

      NSURL *rtfUrl = [[NSBundle mainBundle] URLForResource:@"paylines" withExtension:@".txt"];
      

      【讨论】:

        【解决方案5】:

        您需要做的就是确保选中下面显示的复选框。

        【讨论】:

          【解决方案6】:

          您是否正在尝试在 XCTest 中执行此操作,并且即将砸坏您的笔记本电脑?这是给你的主题:Why can't code inside unit tests find bundle resources?

          【讨论】:

            【解决方案7】:

            转到“Target”->“Build Phases”,选择您的目标,选择“Build Phases”选项卡,单击“Add Build Phase”,然后选择“Add Copy Files”。将目的地更改为“产品目录”。将您的文件拖到“添加文件”部分。

            【讨论】:

            • 如果您还可以告诉我我做了什么以将此文件从复制文件列表中删除,我将不胜感激
            【解决方案8】:

            如果是 Mac OSX,

            转到目标 -> 构建阶段 单击 + 复制新文件构建阶段 选择产品目录并将文件放在那里。

            清理并运行项目。

            【讨论】:

              【解决方案9】:

              在遵循@Neelam Verma 的答案或@dawid 的答案后,其最终结果与@Neelam Verma 的答案相同,不同之处在于@dawid 的答案从将文件拖放到Xcode 项目和@Neelam Verma 的答案开始从已经是 Xcode 项目一部分的文件开始,我仍然无法通过 NSBundle.mainBundle().pathForResource("file-title", ofType:"type") 找到我的视频文件。

              我想可能是因为我的文件位于 Xcode 项目中嵌套的组中,这就是原因,所以我将视频文件移动到 Xcode 项目的根目录,仍然没有运气,这是我的代码:

               guard let path = NSBundle.mainBundle().pathForResource("testVid1", ofType:"mp4") else {
                      print("Invalid video path")
                      return
                  }
              

              最初,这是我的文件名:testVid1.MP4,将视频文件重命名为 testVid1.mp4 解决了我的问题,因此,至少 ofType 字符串参数区分大小写。

              【讨论】:

                【解决方案10】:

                选择项目/特定文件夹 --> 右键单击​​ --> 将文件添加到项目 --> 选择要添加的文件。

                这对我有用。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-10-19
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-08-28
                  • 1970-01-01
                  • 2011-04-26
                  • 1970-01-01
                  相关资源
                  最近更新 更多