Bundle.main.url(forResource:withExtension:)和 Bundle.main.path(forResource:ofType:)有什么不同?

news/2024/9/25 11:19:54

这两种方式都可以用于获取应用程序包中的资源文件(如 JSON 文件),但它们在返回结果的类型和处理方式上有所不同:

1. Bundle.main.url(forResource:withExtension:)

  • 返回类型: 这个方法返回一个可选的 URLURL?)。
  • 使用场景: 当你需要文件的路径作为 URL 时,使用这个方法更为方便,因为 URL 提供了一些有用的方法,比如可以直接用于文件 I/O 操作。
  • 示例:
    if let url = Bundle.main.url(forResource: "data", withExtension: "json") {do {let data = try Data(contentsOf: url)// 处理 data} catch {print("Error reading JSON: \(error)")}
    }
    

2. Bundle.main.path(forResource:ofType:)

  • 返回类型: 这个方法返回一个可选的 StringString?),即文件的路径字符串。
  • 使用场景: 当你只需要文件的路径字符串,并且之后可能会将其用于其他字符串处理时,这个方法更适合。
  • 示例:
    if let path = Bundle.main.path(forResource: "complicate", ofType: "json") {do {let data = try Data(contentsOf: URL(fileURLWithPath: path))// 处理 data} catch {print("Error reading JSON: \(error)")}
    }
    

总结

  1. 类型:

    • url(forResource:withExtension:) 返回 URL?,适合需要 URL 的场景。
    • path(forResource:ofType:) 返回 String?,适合需要字符串路径的场景。
  2. 处理:

    • 使用 URL 更方便地进行文件 I/O 操作。直接使用 Data(contentsOf:) 时,可以直接传入 URL。
    • 使用字符串路径需要先将其转换为 URL,例如 URL(fileURLWithPath: path)

在大多数情况下,直接使用 url(forResource:withExtension:) 方法会更加简洁和方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/64523.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Linux 中awk命令同时指定多个分割符

001、[root@localhost test]# ls a.txt [root@localhost test]# cat a.txt ## 测试数据 aadd kk;gene=ABEK:ett 8735 fdfk jj;gene=IYNF:34DF UYG [root@localhost test]# awk -F "[gene=|:]" {print $2} a.txt ## 使用-F 参数无…

【随手记录】docker部署jenkins,集成maven、spring项目

1、下载镜像文件到服务器docker pull jenkins/jenkins:lts-jdk17或离线导入镜像:docker load -i jenkins-lts-jdk17检查镜像是否导入:docker images|grep jenkinsjenkins/jenkins lts-jdk17 7a7add0bf3da 2 weeks ago 470MB2024年6月以后国内很多大型的Docker镜像站…

CH585烧录

目前最新版本ISP工具还未更新至官网,旧版ISP工具还不包含CH585烧录选项。 可通过最新版本Mounriver Studio导出ISP工具, 除此之外,还需要更换下配置文件,右键Mounriver Studio打开文件所在位置,将名称为WCH55xISPDLL.dll的配置文件替换到该路径下:D:\MounRiver\MounRiver…

寄存器传值——函数剖析

寄存器传值导致的未定义行为寄存器传值——函数剖析 现象 实验环境:Ubuntu20,x86-64指令集 #include <stdio.h>int sum(int a, int b){return a+b; }int main() {int aa = sum(5,3);printf("%d, %d\n", 9);return 0; }编译器提示我们 printf()函数少一个参数…

查看exe启动命令和参数

wmic process where caption="qq.exe" get caption,commandline /value #qq.exe可以更换为任何正在运行的进程

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024) Windows 11, version 23H2,企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版…

【YashanDB知识库】YAS-04110 invalid variant name

本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369202.html?templateId=1718516 【标题】错误码处理 【问题分类】查询语句报错 【关键字】YAS-04110 【问题描述】执行特定sql时,遇到相应报错 【问题原因分析】字段中含有保留字,应使用双引号包裹字…

章14——Hashtable

键和值为NULL时会抛出空指针异常。KEY重复且无NULL时同样会替换,和HashMap是一样的。按照2倍+1的规律去扩容与HASHMAP对比PROPERTIES,也是MAP接口的实现类,是Hashtable的子类 .properties 文件通常是用于数据库的配置文件,储存数据库的用户名密码等东西 详细可见博客园博客…