我正在尝试制作一个简单的Pokedex,它允许用户使用Swift在英语和日语之间切换pokemon的名称。我在互联网上找到了这个来源,pokedex.json文件中有英文和日文的口袋妖怪名称,images文件夹中有口袋妖怪图像,所以我计划使用这个来源,但问题是我不知道如何无端点访问数据。
通常,我使用swiftyJOSN和Alamofire向API发出请求并解析JSON数据,但源没有API端点。这就是为什么我对如何在没有任何GET请求的情况下访问数据感到困惑。
我想不知何故,我需要将pokedex.json和其他图像文件放入我的代码项目中,并使我的代码可以访问数据(对不起,我不确定(。所以,如果我是正确的,有人能告诉我如何将文件导入到我的项目中吗?另一方面,如果我试图做一些完全错误的事情,有人能告诉我吗?
此外,我想知道如何使用Swift访问JSON文件中的数据。
是的,您可以将文件作为应用程序捆绑包中的资源发送。以下是您的操作方法:
- 在Xcode中,在项目中创建一个组,并为其提供一个描述性名称,例如";资源">
- 从源代码下载pokedex.json文件
- 将此
pokedex.json
文件拖放到Finder到Xcode的组中。当出现文件添加对话框时,一定要选中";如果需要,复制项目";复选框,并且您的主要目标已被选中 - 在代码中,您读取的资源如下:
guard let pokedexFilePath = Bundle.main.path(forResource: "pokedex", ofType: "json"),
let pokedexData = FileManager.default.contents(atPath: pokedexFilePath) else
{
// TODO: handle error appropriately
return
}
// Now you can parse pokedexData with SwiftyJSON, Codable or whatever you prefer.
然而,如果你需要在应用程序中发送图像文件,你可能会发现使用资产目录(Xcode项目中的蓝色Assets.xassets文件夹(比使用我上面描述的方法更方便。在资产目录中,您可以为不同的屏幕或界面主题指定同一图像的不同版本,如果需要,甚至可以为同一图像指定本地化版本。使用资产目录时,只需调用UIImage(named: "your_image_name_in_the_catalog")
就可以在代码中创建图像。