use*_*644 3 xcode ios swift alamofire swift3
在将代码更改为swift 3并使用Alamofire 4之前我遇到了问题.在使用Alamofire 4和swift 3之前,我的代码工作正常.当我改为swift 3并使用Alamofire 4时,我遇到了很多错误并且修好了所有错误.我还有一个问题,就是我没有得到任何回应!
我目前的代码使用Swift 3和Alamofire 4
import UIKit
import Alamofire
protocol VideoModelDelegate{
func dataReady()
}
class VideoModel: NSObject {
let API_KEY = "xxxxxxxxxxxxxxxxx"
let UPLOADS_PLAYLIST_ID = "PLc4t1-K0nthvSUhYtc43BiG-Z9LK2mw5D"
var videoArray = [Video]()
var delegate: VideoModelDelegate?
let urladdress = "https://www.googleapis.com/youtube/v3/playlistItems"
func getFeedVideos() {
Alamofire.request("https://www.googleapis.com/youtube/v3/playlistItems", method: .get, parameters: ["part":"snippet", "playlistId": UPLOADS_PLAYLIST_ID,"key": API_KEY, "maxResults": "50"], encoding: JSONEncoding.default).responseJSON(completionHandler: { (response) -> Void in
print("##############################")
print(response)
print("##############################")
if let JSON = response.result.value as? [String: Any] {
print(JSON)
var arrayOfVideos = [Video]()
if let items = JSON["items"] as? [[String : Any]] {
for video in items {
print(JSON)
let videoObj = Video()
videoObj.videoId = (video as NSDictionary).value(forKeyPath:"snippet.resourceId.videoId") as! String
videoObj.videoTitle = (video as NSDictionary).value(forKeyPath:"snippet.title") as! String
videoObj.videoDescription = video["snippet.description"] as! String
if video[ "snippet.thumbnails.maxres.url"] != nil {
videoObj.videoThumbnailUrl = video["snippet.thumbnails.maxres.url"] as! String
}
else if video["snippet.thumbnails.hqdefault.url"] != nil{
videoObj.videoThumbnailUrl = video["snippet.thumbnails.hqdefault.url"] as! String
}
else if video["snippet.thumbnails.sddefault.url"] != nil{
videoObj.videoThumbnailUrl = video["snippet.thumbnails.sddefault.url"] as! String
}
else if video["snippet.thumbnails.mqdefault.url"] != nil{
videoObj.videoThumbnailUrl = video["snippet.thumbnails.mqdefault.url"] as! String
}
else if video["snippet.thumbnails.default.url"] != nil{
videoObj.videoThumbnailUrl = video["snippet.thumbnails.default.url"] as! String
}
else{
}
arrayOfVideos.append(videoObj)
if self.delegate != nil {
self.delegate!.dataReady()
}
}
}
else{
print("NOO")
}
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
我以前的代码工作正常:
import UIKit
import Alamofire
protocol VideoModelDelegate{
func dataReady()
}
class VideoModel: NSObject {
let API_KEY = "xxxx"
let UPLOADS_PLAYLIST_ID = Video().playlistID
var videoArray = [Video]()
var delegate:VideoModelDelegate?
func getFeedVideos(){
// Fetch the videos dynamically using YouTube Data API
Alamofire.request(.GET, "https://www.googleapis.com/youtube/v3/playlistItems", parameters: ["part":"snippet", "playlistId":UPLOADS_PLAYLIST_ID, "key":API_KEY, "maxResults":50], encoding: ParameterEncoding.URL, headers: nil).responseJSON { (response) in
if let JSON = response.result.value {
var arrayOfVideos = [Video]()
for video in JSON["items"] as! NSArray{
//print(video)
// Create video objects off of the JSON response
let videoObj = Video()
videoObj.videoId = video.valueForKeyPath("snippet.resourceId.videoId") as! String
videoObj.videoTitle = video.valueForKeyPath("snippet.title") as! String
videoObj.videoDescription = video.valueForKeyPath("snippet.description") as! String
if video.valueForKeyPath("snippet.thumbnails.maxres.url") != nil {
videoObj.videoThumbnailUrl = video.valueForKeyPath("snippet.thumbnails.maxres.url") as! String
}
else if video.valueForKeyPath("snippet.thumbnails.hqdefault.url") != nil{
videoObj.videoThumbnailUrl = video.valueForKeyPath("snippet.thumbnails.hqdefault.url") as! String
}
else if video.valueForKeyPath("snippet.thumbnails.sddefault.url") != nil{
videoObj.videoThumbnailUrl = video.valueForKeyPath("snippet.thumbnails.sddefault.url") as! String
}
else if video.valueForKeyPath("snippet.thumbnails.mqdefault.url") != nil{
videoObj.videoThumbnailUrl = video.valueForKeyPath("snippet.thumbnails.mqdefault.url") as! String
}
else{
videoObj.videoThumbnailUrl = video.valueForKeyPath("snippet.thumbnails.default.url") as! String
}
arrayOfVideos.append(videoObj)
}
// when all the video objects have been constructed, assign the array to the VideoModel property
self.videoArray = arrayOfVideos.reverse()
// Notify the delegate the data is ready
if self.delegate != nil{
self.delegate!.dataReady()
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试打印响应这是我在日志中得到的:
FAILURE:错误域= kCFErrorDomainCFNetwork代码= 303"(null)"UserInfo = {NSErrorPeerAddressKey = {length = 28,capacity = 28,bytes = 0x1c1e01bb000000002607f8b040090809 ... 0000200a00000000},_ kCFStreamErrorCodeKey = -2201,_kCFStreamErrorDomainKey = 4}
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |