我一直在根据这个 YouTube 视频指南进行编程,并使用所述视频中提供的代码(目前在 this one 工作)。当前类(class)的重点是添加可在线使用的缩略图。但是,我当前的目标是使用本地镜像作为缩略图,因为我拥有的少数视频在我的特定项目中永远不会改变。
目前我有以下代码。它工作得很好(正如它应该的那样),标记为“LINE A”的行:
//
// ViewController.swift
// Project
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var tableView: UITableView!
var videos:[Video] = [Video]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let model = VideoModel()
self.videos = model.getVideos()
self.tableView.dataSource = self
self.tableView.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return videos.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("BasicCell")!
//let videoTitle = videos[indexPath.row].videoTitle
//Customize the cell to display the video title
//cell.textLabel?.text = videoTitle
//Construct the video thumbnail url
//LINE A
let videoThumbnailUrlString = "https://i.imgur.com/bYESnOo.jpg"
//LINE B
//let videoThumbnailUrlString = "/Users/User/Documents/Project/" + videos[indexPath.row].thumbnailId + ".JPG"
//Create a NSURL object
let videoThumbnailUrl = NSURL(string: videoThumbnailUrlString)
if videoThumbnailUrl != nil {
//Create a NSURLRequest object
let request = NSURLRequest(URL: videoThumbnailUrl!)
//Create a NSURLSession
let session = NSURLSession.sharedSession()
//Create a datatask and pass in the request
let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//Get a reference to the imageview element of the cell
let imageView = cell.viewWithTag(1) as! UIImageView
//Create an image object from the data and assign it into the imageView
imageView.image = UIImage(data: data!)
})
})
dataTask.resume()
}
return cell
}
}
我尝试使用标记为“LINE B”的行,但它返回标记为Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)的错误
下面的内容为 fatal error :在解包可选值(lldb)时意外发现nil
这是视频类:
import UIKit
class Video: NSObject {
var videoId:String = ""
var thumbnailId:String = ""
var videoTitle:String = ""
var videoDescription:String = ""
}
VideoModel 类如下:
//
// VideoModel.swift
import UIKit
class VideoModel: NSObject {
func getVideos() -> [Video] {
var videos = [Video]()
//Create video object
let video1 = Video()
//Assign properties
video1.videoId = "_T-zq-aKha3"
video1.thumbnailId = "1Alissa"
video1.videoTitle = "Alissa"
video1.videoDescription = "Tu vieja samurai comiendo un peanut butter jelly sandwich."
//Append it into the videos array
videos.append(video1)
//Create video object
let video2 = Video()
//Assign properties
video2.videoId = "LUabbwPd-4I"
video2.thumbnailId = "2SettingGoals"
video2.videoTitle = "Setting Goals"
video2.videoDescription = "Rakatata y las mujeres donde estan auuuuu azucar."
//Append it into the videos array
videos.append(video2)
//Create video object
let video3 = Video()
//Assign properties
video3.videoId = "j1HTxdtE5Yg"
video3.thumbnailId = "3Plan"
video3.videoTitle = "Plan"
video3.videoDescription = "Sancho panza se come un hotdog enrollado en 5 rodajas de pan con harta ketchup."
//Append it into the videos array
videos.append(video3)
//Create video object
let video4 = Video()
//Assign properties
video4.videoId = "7moB28WpcIg"
video4.thumbnailId = "4AlissaSuges"
video4.videoTitle = "Alissa's Suggestions"
video4.videoDescription = "Sancho panza se come un hotdog enrollado en 5 rodajas de pan con harta ketchup."
//Append it into the videos array
videos.append(video4)
return videos
}
}
任何有关如何实现切换到本地镜像的提示或线索将不胜感激。 如果您需要我提供任何其他信息,请随时询问。
最佳答案
我认为您忘记通过 registerNib
或 registerClass
函数将单元格绑定(bind)到表格 View 。
还有一件事,您使用的函数 dequeueReusableCellWithIdentifier(identifier: String) -> UITableViewCell? 可能会返回 nil 对象。它的返回值是可选
。因此,您最好使用 if let
语句以防它为 nil,并在发生这种情况时创建一个单元格。
关于ios - 将本 map 片添加到imageView中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36733129/