【问题标题】:Swift / XCode with Kingfisher- Unable to Load Images from Web带有 Kingfisher 的 Swift / XCode - 无法从 Web 加载图像
【发布时间】:2016-04-29 02:39:09
【问题描述】:

我已经学习了有关 UIPageViewControllers 的教程,我正在尝试加载我保存在 Amazon Web Services 中的图像。

我正在尝试浏览我的 UIPageController 上的不同项目,从 AWS 中提取各种图像,我收到了:

“致命错误:在展开可选值时意外发现 nil。:

型号:

import UIKit

class PageContentViewController: UIViewController {

@IBOutlet weak var lblTitle: UILabel!

@IBOutlet weak var imageView: UIImageView!

var pageIndex: Int = 0
var strTitle: String!
var strPhotoName: String!

override func viewDidLoad() {
    super.viewDidLoad()

    imageView.image = UIImage(named: strPhotoName)
    lblTitle.text = strTitle
    }
}

控制器:

import UIKit
import Kingfisher

class ViewController: UIPageViewController,   UIPageViewControllerDataSource
{
var arrPageTitle: NSArray = NSArray()
var arrPagePhoto: NSArray = NSArray()

override func viewDidLoad() {
    super.viewDidLoad()

    arrPageTitle = ["This is The App Guruz", "This is Table Tennis 3D", "This is Hide Secrets"];
    arrPagePhoto = ["https://s3.amazonaws.com/fan-polls/heyward_again.jpg", "https://s3.amazonaws.com/fan-polls/Schwarber.jpg", "https://s3.amazonaws.com/fan-polls/mike_ditka.jpg"];

    self.dataSource = self

    self.setViewControllers([getViewControllerAtIndex(0)] as [UIViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
}

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?
{
    let pageContent: PageContentViewController = viewController as! PageContentViewController

    var index = pageContent.pageIndex

    if ((index == 0) || (index == NSNotFound))
    {
        return nil
    }

    index += 1;
    return getViewControllerAtIndex(index)
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController?
{
    let pageContent: PageContentViewController = viewController as! PageContentViewController

    var index = pageContent.pageIndex

    if (index == NSNotFound)
    {
        return nil;
    }

    index += 1;
    if (index == arrPageTitle.count)
    {
        return nil;
    }
    return getViewControllerAtIndex(index)
}

func getViewControllerAtIndex(index: NSInteger) -> PageContentViewController
{
    // Create a new view controller and pass suitable data.
    let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as! PageContentViewController

    pageContentViewController.strTitle = "\(arrPageTitle[index])"
    pageContentViewController.strPhotoName = "\(arrPagePhoto[index])"
    pageContentViewController.imageView.kf_setImageWithURL(arrPagePhoto[index] as! NSURL)

    pageContentViewController.pageIndex = index

    return pageContentViewController
    }
  }

【问题讨论】:

  • 为什么要从 String 转换为 NSURL?首先制作这个 URL,然后使用它,而不只是投射它
  • 我是 Swift 和 iOS 的新手,你能粘贴代码吗?

标签: ios xcode swift amazon-web-services uipageviewcontroller


【解决方案1】:

正如前面的评论中提到的,您从 String 转换为 NSURL。 'String' 和 'NSURL' 是不同的对象类型。 所以你需要进行转换。这会将您的字符串转换为 NSURL。

let imageUrl = NSURL(string: arrPagePhoto[index])

现在将此值与 Kingfisher 一起使用

pageContentViewController.imageView.kf_setImageWithURL(imageUrl)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多