TMDb API 调用 - Swift

2023-11-30

我正在打电话TMDb Api按类型获取一系列电影。我想访问的许多属性都返回“nil”,例如“vote_count”、“poster_path”和“vote_average”。

如果我在浏览器中调用 api,我会按预期获得所有属性。

这是我的模型:

import Foundation

// MARK: - MovieList
struct MovieList: Codable {
    let page: Int
    let totalResults: Int?
    let totalPages: Int?
    let results: [Result]

    enum CodingKeys: String, CodingKey {
        case page
        case totalResults = "total_results"
        case totalPages = "total_pages"
        case results
    }
}

// MARK: - Result
struct Result: Codable {
    let popularity: Double?
    let voteCount: Int?
    let video: Bool?
    let posterPath: String?
    let id: Int?
    let adult: Bool?
    let backdropPath: String?
    let originalLanguage: OriginalLanguage?
    let originalTitle: String?
    let genreIDS: [Int]?
    let title: String?
    let voteAverage: Double?
    let overview, releaseDate: String?

    enum CodingKeys: String, CodingKey {
        case popularity
        case voteCount = "vote_count"
        case video
        case posterPath = "poster_path"
        case id, adult
        case backdropPath = "backdrop_path"
        case originalLanguage = "original_language"
        case originalTitle = "original_title"
        case genreIDS = "genre_ids"
        case title
        case voteAverage = "vote_average"
        case overview
        case releaseDate = "release_date"
    }
}

enum OriginalLanguage: String, Codable {
    case en = "en"
    case es = "es"
}

这是网络调用:

func getMovieDetails(movie: Int, completion: @escaping (Result?) -> ()) {

        guard let url = URL(string: "https://api.themoviedb.org/3/movie/157336?api_key=6228bff945f7bd2m18c04fc3839829c0") else {
            fatalError("Invalid URL")
        }

            let config = URLSessionConfiguration.default
            let session = URLSession(configuration: config)

            let task = session.dataTask(with: url) { data, response, error in

                // Check for errors
                guard error == nil else {
                    print ("error: \(error!)")
                    return
                }
                // Check that data has been returned
                guard let data = data else {
                    print("No data")
                    return
                }

                do {

                    let decoder = JSONDecoder()
                    decoder.keyDecodingStrategy = .convertFromSnakeCase
                    let movieDetails = try decoder.decode(Result.self, from: data)

                    DispatchQueue.main.async {

                       completion(movieDetails)
                        print(movieDetails)

                    }

                } catch let err {
                    print("Err", err)
                }
            }
            // execute the HTTP request
            task.resume()
        }
    }

这是回应:

MovieList(page: 1, totalResults: nil, totalPages: nil, results: [QuickFlicks.Result(popularity: Optional(171.78), voteCount: nil, video: Optional(false), posterPath: nil, id: Optional(454626), adult: Optional(false), backdropPath: nil, originalLanguage: nil, originalTitle: nil, genreIDS: nil, title: Optional("Sonic the Hedgehog"), voteAverage: nil, overview: Optional("Based on the global blockbuster videogame franchise from Sega, Sonic the Hedgehog tells the story of the world’s speediest hedgehog as he embraces his new home on Earth. In this live-action adventure comedy, Sonic and his new best friend team up to defend the planet from the evil genius Dr. Robotnik and his plans for world domination."), releaseDate: nil)])

任何帮助,将不胜感激。谢谢。


您向解码器发出相互矛盾的指令,首先您有 CodingKeys 枚举,例如posterPath属性应该从poster_path键,然后你设置keyDecodingStrategy = .convertFromSnakeCase这意味着解码器首先翻译密钥poster_path to posterPath before尝试将密钥与属性相匹配。

所以要么删除decoder.keyDecodingStrategy = .convertFromSnakeCase或删除CodingKeys enum

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TMDb API 调用 - Swift 的相关文章

  • PhoneGap/Cordova:如何使用cookies(iOS)?

    我有一个适用于 iOS 的 PhoneGap Corodova 项目 在 iOS 模拟器上构建时 我使用了 Jquery Cookies 它们很好 但是 既然我的设备上有该应用程序用于测试 它们就不再工作了 我猜这只是 iOS 不支持的东西
  • UITextField 文本更改事件

    如何检测文本字段中的任何文本更改 委托方法shouldChangeCharactersInRange适用于某些东西 但它并不能完全满足我的需求 因为在它返回 YES 之前 textField 文本不可用于其他观察者方法 例如在我的代码中ca
  • :hover 状态在 iOS 上不会结束

    我有一个带有悬停状态的简单菜单
  • 退出我的应用程序后未显示蓝色横幅“您的应用程序正在使用您的位置”

    我的应用程序在后台模式下使用核心位置 当应用程序处于后台模式并定期发送 GPS 坐标时 不会显示蓝色横幅 您的应用程序正在使用您的位置 例如谷歌地图应用程序 知道我可能错过了什么吗 要显示蓝色条 您应该 1 启用Background Loc
  • 如何从 GCD (DispatchQueue) 转换为 Swift async/await?

    我正在关注斯坦福大学的 CS193p 开发 iOS 应用程序在线课程 它使用 Grand Central Dispatch GCD API 来演示多线程 但他们指出 自 WWDC 2021 起 GCD 已大部分被 Swift 新的内置异步
  • 如何在 AVAudioSession 内使用 iPhone XS 中内置的立体声(2 通道)麦克风?

    我试图从 iPhone XS 的所谓立体声后置麦克风获取两个通道 但在不同位置只能看到一个通道AVAudioSession and AVAudioSessionPortDescription与后置摄像头相关联 我尝试过使用AVAudioSe
  • iOS 8 支持动态链接吗?

    直到 iOS7 之前 出于安全考虑 Apple 都不支持动态链接 开发人员之间的代码重用通常依赖于静态库 这些静态库是作为应用程序可执行文件的一部分构建的 在 iOS8 中引入扩展似乎稍微改变了这一点 因为扩展是单独的可执行文件 扩展及其包
  • NSHTTPCookieStorage 是否跨应用程序持续存在?

    所以我只是好奇 NSHTTPCookieStorage 是否跨应用程序持久存在 或者仅在当前应用程序本地 我希望在另一个应用程序中收集的一些 cookie 可以在搜索应用程序中访问 是这样的吗 谢谢 PS 这是在 iPhone 或 iPad
  • JSON对象的长度[重复]

    这个问题在这里已经有答案了 该函数生成一个包含 json 对象的数组 var estoque function unpack estoque tnm total estoque vl id tid st tnm tnm split tota
  • Swift - 本地通知不会被触发

    我正在 Swift 3 中编码 我只是想发送通知now没有任何延迟或间隔 然而 通知永远不会被触发 这是我的代码 视图控制器代码 import UserNotifications class HomeViewController UIVie
  • iOS 自定义单元格设计放在哪里? awakeFromNib 还是 cellForRowAtIndexPath?

    所以 基本上我用笔尖做了一个定制单元 希望我应用一些定制设计 比如颜色和阴影 我发现了两种应用样式的方法 awakeFromNib override func awakeFromNib super awakeFromNib Containe
  • TDD iOS 教程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您好 我正在寻找非常好的 iOS TDD 教程 请您帮助我 什么是最好的 iOS TDD 书籍 博客
  • 获取 JSON 中的 HTML 以在 React 组件中呈现为 HTML

    试图找出如何让链接实际呈现为链接 现在 在我从 Json 文件中读取这行文本后 React 将超链接渲染为文字文本 而不将其渲染为链接 一些数据 json about John has a blog you can read a href
  • iOS 中如何清除特定域的 cookie?

    我已经搜索了 StackOverflow 上的几乎所有问题来寻找我的问题的答案 我还没有找到任何有用的链接或教程来说明哪种方式最好清除特定域的 cookie 如果有人可以帮助我 请 我自己找到了解决方案 如果您想删除 UIWebView 中
  • 将 JSON 导出到环境变量

    如果我有这样的 JSON hello1 world1 testk testv 我想将每个键值对导出为环境变量 如何通过 shell 脚本来做到这一点 例如 当我在终端上写时 echo hello1 world1应该打印其他键值对吗 注意 上
  • Spring-roo REST JSON 控制器损坏日期字段

    我有一个以两种方式使用的数据实体 我在页面加载时用其中的一些数据填充表格 当您单击该列的一行时 我通过 AJAX 获取该项目的详细信息并将其显示在表单字段中 我在服务器端使用 Spring Roo 生成的 REST 端点 在客户端使用 Ba
  • Swift 中的“funcobserveValueForKeyPath(keyPath:NSString,object:AnyObject,change:NSDictionary,context:Void)”问题

    我已经为 AVPlayer 添加了一个观察者 如下所示 self audioPlayer addObserver self forKeyPath currentItem status options NSKeyValueObservingO
  • 当应用程序退出活动状态时,MPMovies PlayerViewController 被解雇

    当我将 iPhone 设置为睡眠状态 切换到另一个应用程序等 然后再次返回时 之前的可见内容MPMoviePlayerViewController 提出与presentMoviePlayerViewControllerAnimated 已经
  • 将第 3 方库 ZXing 导入 Xcode

    我尝试了多种方法将第 3 方库 ZXing 导入我的 iOS 应用程序 但所有方法都很痛苦 或者根本不起作用 如果有人可以建议我做错了什么 或者提出导入 ZXing 等库的更好方法 我将非常感激 一定比这个容易 这就是我所做的 结果是 My
  • 自定义字体显示在 IB 中,但不显示在模拟器中

    我已经设置了一个UITextView and a UILabel使用自定义字体 它是垂直镜像的蒙古文字体 但我还添加了英文文本 以便您可以看到效果 这些文字显示在 Interface Builder 中 但在模拟器中大部分字符都在UITex

随机推荐

  • 只需按一下按键即可连续移动?

    我正在尝试用java编写一个程序 该程序涉及通过按一次按键使对象不断移动 想想 Pacman 你按下一次 Pacman 就会继续上升 直到你按下另一个键 如果可能的话 我想让代码保持简单 我原来的动作 一次按键 一次动作 是这样的 publ
  • 将类变量传递给另一个类

    我想将一个类变量传递给另一个类 并使其成为该类的类变量 在以下情况下我将如何执行此操作 public class GLCamTest extends Activity public float array something class G
  • Jena Fuseki Sparql 无查询=错误

    我正在尝试使用这个简单的查询将数据插入 jena fusioni 图中 PREFIX test
  • Android 语音通话记录

    我希望有一些代码能够收到任何传入和传出语音呼叫的通知 我需要获取以下所有内容 如果是来电或去电 拨打的号码或来电显示的电话号码 通话时长 或者是否是未接来电 如果我可以获得更多联系信息 特别是联系人姓名 如果电话号码与手机联系人列表中的某个
  • 具有不同本地名称的 XDocument 重复命名空间

    我有一个 XML 文档 如下所示
  • 仅在 iOS 17 设备以下遇到错误“线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x0)”

    我刚刚将 XCode 更新到版本 15 遇到此错误 仅限 17 以下的 iOS 版本 Thread 1 EXC BAD ACCESS code 1 address 0x0 显示此错误的代码 PathMonitorConectivityPro
  • 如果日志包含特定单词,则忽略并移至下一个模式

    我有一个来自 spring 日志文件的日志文件 日志文件具有三种格式 前两种格式各占一行 中间如果有关键字app info 则为自己开发者打印的信息 如果没有 则由spring框架打印 我们可能会以不同于 Spring 框架的方式对待开发者
  • 自动检测新添加的源文件

    我的问题是 每次添加新的源文件时 我都被迫重新运行 CMake 这真的很烦人 有什么方法 CMake 可以自动检测新添加的源文件吗 CMake 没有观察文件夹的功能 某些操作系统 例如 MacOS X 可以在文件夹发生更改时执行操作 如果任
  • 如何使 C# Xamarin.Android 应用程序在手机启动时运行?

    我一直在尝试让应用程序在手机启动时运行 并最终在按下时运行应用程序KeyCode CameraButton 我正在使用一个名为BootReceiver 继承自BroadcastReceiver 这是我的课程 namespace ColorP
  • 我的 APK 的 META-INF 中的 androidx.XXXX.version 文件是什么?

    当使用 AndroidX 库构建 APK 时 我会得到很多小文本文件 例如META INF androidx core core version 这些文件的目的是什么 它们是如何使用的androidx 我最近也很好奇 所以浏览了一下源代码
  • 如何将 VSIX 输出包含在其包中?

    我创建了一个 VSIX 包 我想将它的输出 dll 包含在 VSIX 中 我尝试在资产部分的 vsixmanifest 文件中添加 MEF 组件引用 但它没有解决 任何想法 用记事本打开项目文件并将此项设置为 true
  • CSS 显示不起作用

    我真的很沮丧因为Display none没有在处理 tr IE 7 中的元素 我该怎么办 它在 FF Chrome 等上完美运行 首先使用以下工具检查您的代码是否正确 HTML 验证器 CSS 验证器 tr
  • 使用 json lib 使用 Python 从嵌套 JSON 中获取元素

    我想列出 BoxDet 中名称为 BoxDet 的所有元素 目的是以这种方式列出它 BoxDet ABC 我的 JSON 的一小部分 id 1 name BoxH readOnly true children id 100 name Box
  • 从 Hoxton.SR4 升级到 Spring Cloud Hoxton.SR7 后遇到错误

    使用 Spring CloudHoxton SR4和 Spring Boot2 2 9 RELEASE库 我的 Spring Boot 微服务可以正确启动 并且在本地环境中针对 localstack 运行时运行得很好 但是当我升级到Hoxt
  • 如何通过 LINQ to XML 创建字典

    我有以下 XML
  • PhoneGap 未发出 AJAX (jsonp) 请求

    我一整天都在努力解决这个问题 并用谷歌搜索了所有地方 可能我只是找不到包含解决方案的一页 但我已经查看了问题和解决方案 例如 Ajax 调用phonegap 不发送请求 JQuery mobile Phonegap Ajax 调用无法在 A
  • 将具有相同 ID 类和标签 HTML 的多个元素拖放到屏幕上的任意位置

    大家好 这是我的第一个问题 所以我可能做错了 我想要实现的是拥有多个
  • 实现 PostgreSQL 表的历史记录

    我想实现 PostgreSQL 表的更改历史记录 该表的定义方式如下 CREATE TABLE ps counters psid integer NOT NULL counter bigint NOT NULL 我希望历史表看起来像 CRE
  • 读取刚刚写入临时文件的数据[重复]

    这个问题在这里已经有答案了 在 Go 中 我尝试将数据写入临时文件 然后转身读取该文件 但没有成功 下面是一个精简的测试程序 我已通过检查临时文件验证数据是否已写入文件 所以 至少我知道数据正在进入文件 我只是无法读出它 提前谢谢你的帮助
  • TMDb API 调用 - Swift

    我正在打电话TMDb Api按类型获取一系列电影 我想访问的许多属性都返回 nil 例如 vote count poster path 和 vote average 如果我在浏览器中调用 api 我会按预期获得所有属性 这是我的模型 imp