swift - Swift 2.2 中 Alamofire 请求的返回值

标签 swift swift2 alamofire

<分区>

下午好

我正在尝试创建一个简单的函数,以在 Swift 2.2 中使用带有 Alamofire 的外部 API 来检索一些信息,但是当我想要返回该值时,它总是空的。

我尝试从该网站关注一些其他 QA,并从其他网站关注更多,但我无法从该函数返回值。

当我在 Alamofire 中打印我的变量(概述)时它是正确的,但是当我尝试返回它时,它总是空的。我必须在我的代码中添加(或更改)什么才能使其正常工作?

这是我的功能:

func getOverview(slug: String, clientID: String) -> String {

    let movieURL: String = "https://api.trakt.tv/movies/"+slug+"?extended=full"

    let headers = ["trakt-api-version":"2", "Content-Type": "application/json", "trakt-api-key": clientID]

    var overview: String = ""

    Alamofire.request(.GET, movieURL, headers: headers).responseJSON { response in

        if response.result.isSuccess {
            let movieInfo = JSON(data: response.data!)
            overview = self.parseMovieOverview(movieInfo)
            // THAT'S CORRECT
            print(overview)
        } else {
            print(response.result.error)
        }
    }

    // THAT'S EMPTY
    return overview
}

这是我的决定:

// THAT'S ALWAYS EMPTY    
overview = getOverview(slug, clientID: clientID)

编辑返回值概述:

func parseMovieInfo(json: SwiftyJSON.JSON, clientID: String) -> [Movie] {

    for result in json.arrayValue {

        let slug = result["ids"]["slug"].stringValue
        let title = result["title"].stringValue
        let year = result["year"].stringValue

        // OVERVIEW
        let overview = getOverview(slug, clientID: clientID)

        // PICTURE
        let picture = getPicture(slug, clientID: clientID)

        let movie = Movie(slug: slug, title: title, year: year, overview: overview, picture: picture)

        self.movies.append(movie)
    }

    return movies
}

非常感谢,

问候

最佳答案

查看网站上最常见的问题。您的问题是时间问题之一——如果您要在完成处理程序内部和外部打印两个结果,您将看到该函数在完成处理程序执行之前就返回了。它们是异步的,函数调用本身在结果返回之前就已经消失了

关于swift - Swift 2.2 中 Alamofire 请求的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687457/

相关文章:

ios - 第一个 TableView 单元格没有正确出队

ios - 通过 Swift 3 和 Alamofire 4 使用 JSON 和自定义 header 上传照片/文件 | iOS | swift

ios - 在 iOS 中使用 AVPlayerItem 向后擦洗是否与向前擦洗一样流畅?

xcode - Swift:如何在 Playground 中绘制 UI?

ios - 将变量分配给传入 View Controller 的正确方法

ios - 为核心数据一对多关系添加一个项目到 NSSet

ios - 动画 View 跳转到最终位置而不是缓慢移动

ios - 无法从 firebase 数据库获取 key

json - 在 swift 4.0 中使用 Alamofire/SwiftyJSON 时出错

swift - 使用 AVMutableComposition 和 AVAssetExportSession 创建的 MP4 视频在 Quicktime 中工作,但在所有其他视频工具中显示损坏