json Web サービスからデータを取得していますが、UI に表示できません

ユーザー8039588

ここで、json Web サービスからデータを取得できても、プログラムの ui に表示できないという問題が発生しています。エラーが発生している場所と、そこに記載されていることも、誰か助けてもらえますか?

class DetailsViewController: UIPageViewController{

    @IBOutlet var navigationBar: UINavigationBar!
    @IBOutlet var imageView: UIImageView!
    @IBOutlet var pageControl: UIPageControl!
    @IBOutlet var nameLabel: UILabel!
    @IBOutlet var priceLabel: UILabel!
    @IBOutlet var textview: UITextView!

    var productName :String?
    var productprice :String?
    var productdescription :String?
    var thumbnailimageArray = [String]()
    var imageArray = [String]()
    var pageIndex: Int = 0


let urlString = "http://www.json-generator.com/api/json/get/cjpberBhKa?indent=2"

    override func viewDidLoad() {
        super.viewDidLoad()
        self.downloadJsonWithURL()
        let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(swiped))
        swipeLeft.direction = .left
        self.imageView.addGestureRecognizer(swipeLeft) //unexpectely found nil while unwrapping an optional value
        let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(swiped))
        swipeRight.direction = .right
        self.imageView.addGestureRecognizer(swipeRight)
        imageView.isUserInteractionEnabled = true
        pageControl.numberOfPages = imageArray.count
        pageControl.currentPage = pageIndex
        // Do any additional setup after loading the view.
    }
    func downloadJsonWithURL() {
        let url = NSURL(string: urlString)
        URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {(data, response, error) -> Void in
            if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary {
                print(jsonObj!.value(forKey: "Detail")!)
                if let detailsArray = jsonObj!.value(forKey: "Detail") as? NSArray {
                    if let detailDict = detailsArray[0] as? NSDictionary {
                        if let name = detailDict.value(forKey: "productName") {
                            self.productName = name as? String
                        }
                        if let image1 = detailDict.value(forKey: "image1"){
                            self.imageArray.append(image1 as! String)
                        }
                        if let image2 = detailDict.value(forKey: "image2"){
                            self.imageArray.append(image2 as! String)
                        }
                        if let image3 = detailDict.value(forKey: "image3"){
                            self.imageArray.append(image3 as! String)
                        }
                        if let image4 = detailDict.value(forKey: "image4"){
                            self.imageArray.append(image4 as! String)
                        }
                        if let image5 = detailDict.value(forKey: "image5"){
                            self.imageArray.append(image5 as! String)
                        }
                        if let image6 = detailDict.value(forKey: "image6"){
                            self.imageArray.append(image6 as! String)
                        }
                        if let image7 = detailDict.value(forKey: "image7"){
                            self.imageArray.append(image7 as! String)
                        }
                        if let image8 = detailDict.value(forKey: "image8"){
                            self.imageArray.append(image8 as! String)
                        }
                        if let image9 = detailDict.value(forKey: "image9"){
                            self.imageArray.append(image9 as! String)
                        }
                        if let image10 = detailDict.value(forKey: "image10"){
                            self.imageArray.append(image10 as! String)
                        }
                        if let price = detailDict.value(forKey: "productPrice") {
                            self.productprice = price as? String
                        }
                        if let description = detailDict.value(forKey: "productDes") {
                            self.productdescription = description as? String
                        }
                    }
                }
                OperationQueue.main.addOperation({
                    self.navigationBar.topItem?.title = self.productName
                    self.textview.text = self.productdescription
                    self.priceLabel.text = self.productprice
                    print(self.imageArray)
                    let imgURL = NSURL(string:self.imageArray[0])
                    let data = NSData(contentsOf: (imgURL as URL?)!)
                    self.imageView.image = UIImage(data: data! as Data)
                })
            }
        }).resume()
    }
    func swiped(gesture: UIGestureRecognizer) {
        if let swipeGesture = gesture as? UISwipeGestureRecognizer {
            switch swipeGesture.direction {
            case UISwipeGestureRecognizerDirection.right :
                if pageIndex == 0 {

                }else{
                    pageIndex -= 1
                }
                imageView.image = UIImage(named: imageArray[pageIndex])
            case UISwipeGestureRecognizerDirection.left:
                if pageIndex >= imageArray.count-1{

                }else{
                    pageIndex += 1
                }
                imageView.image = UIImage(named: imageArray[pageIndex])
            default:
                break
            }
        }
    }
マウリク・パンディヤ

func swiped(gesture: UIGestureRecognizer)メソッド実行で画像を表示するために使用しているのは次のとおりです

imageView.image = UIImage(named: imageArray[pageIndex])

しかし、あなたの画像はサーバーからコンピングされているので、あなたの製品のすべての画像を表示する必要があるだけです.最初に表示したのと同じOperationQueue.main.addOperationように画像を表示する代わりに、UIImage(named: imageArray[pageIndex])それをデータに変換してimageviewに表示する必要があり、あなたの変更func swiped(gesture: UIGestureRecognizer)は次のように見えるかもしれません以下のように

func swiped(gesture: UIGestureRecognizer) {
        if let swipeGesture = gesture as? UISwipeGestureRecognizer {
            switch swipeGesture.direction {
            case UISwipeGestureRecognizerDirection.right :
                if pageIndex == 0 {

                }else{
                    pageIndex -= 1
                }
                let imgURL = NSURL(string:self.imageArray[pageIndex])
                let data = NSData(contentsOf: (imgURL as URL?)!)
                self.imageView.image = UIImage(data: data! as Data)

            case UISwipeGestureRecognizerDirection.left:
                if pageIndex >= imageArray.count-1{

                }else{
                    pageIndex += 1
                }
                let imgURL = NSURL(string:self.imageArray[pageIndex])
                let data = NSData(contentsOf: (imgURL as URL?)!)
                self.imageView.image = UIImage(data: data! as Data)
            default:
                break
            }
        }
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

json apiからデータを取得していますが、リストビューで表示できません

分類Dev

WebサービスからJSONデータを解析すると、データが返されません

分類Dev

Webサービスからjson出力をc#のデータテーブルとして取得するにはどうすればよいですか?

分類Dev

JsonがStruts2.0でWebサービスを解析していますか?

分類Dev

助けてください..私はプロジェクトに取り組んでおり、JSON形式でWebサービスからデータを取得しています

分類Dev

Webサービスからmongodbに大きなJSONデータを挿入します

分類Dev

jqgridはRESTサービスからJSONデータを取得しますが、表示しません

分類Dev

WebからJSONデータを取得し、RecyclerViewを使用して表示します

分類Dev

Web ページから json 形式のデータを取得できません

分類Dev

Webビューに関連するJavaScript関数にJSONデータを渡したい。しかし、Javascript関数から応答データを取得できません

分類Dev

REST Web サービスで JSON を解析できません

分類Dev

DelphiXEのWebサイトのAPIからjsonデータを取得して表示します

分類Dev

WebサービスのURLからjson配列を取得します

分類Dev

tableViewは、Webから解析されたデータをjson形式で表示できません

分類Dev

jsonを使用してWebサービスからデータをフェッチしようとすると、データパラメータがnilになります

分類Dev

PHPを使用してJSONに変換されたMYSQLから取得したデータを表示できません

分類Dev

'contentType'が 'false'のときに、Ajaxを使用してWebサービスからXMLではなくJSONを返す

分類Dev

PL / SQLからWebサービスを呼び出すときに、サポートされていないメディアタイプを取得しました

分類Dev

Excel vbaを使用してWebサイトからデータを取得したいのですが、取得できません

分類Dev

asmx Webサービスからデータを取得すると、Androidでエラーが発生します

分類Dev

JavascriptはWebサービスからデータを取得します

分類Dev

JSONからデータを取得しましたが、JSONobjectからArraylistにアクセスできません

分類Dev

android-volleyを使用してJSON配列からカスタムリストビューにデータを取得することはできません

分類Dev

Json配列をWebコアAPIに投稿できません

分類Dev

SecurityNegotiationException-Webサービスからトークンを取得しています

分類Dev

Javaを使用してWebサービスを通じてデータをJSON形式で公開するにはどうすればよいですか?

分類Dev

ANDROID、WebサーバーからJSONデータを解析し、ListViewに表示します

分類Dev

WEBサービスから受信したD3のJSONデータを使用するにはどうすればよいですか?

分類Dev

github-pagesでホストされているWebサイトから受信したJSONデータを保存します

Related 関連記事

  1. 1

    json apiからデータを取得していますが、リストビューで表示できません

  2. 2

    WebサービスからJSONデータを解析すると、データが返されません

  3. 3

    Webサービスからjson出力をc#のデータテーブルとして取得するにはどうすればよいですか?

  4. 4

    JsonがStruts2.0でWebサービスを解析していますか?

  5. 5

    助けてください..私はプロジェクトに取り組んでおり、JSON形式でWebサービスからデータを取得しています

  6. 6

    Webサービスからmongodbに大きなJSONデータを挿入します

  7. 7

    jqgridはRESTサービスからJSONデータを取得しますが、表示しません

  8. 8

    WebからJSONデータを取得し、RecyclerViewを使用して表示します

  9. 9

    Web ページから json 形式のデータを取得できません

  10. 10

    Webビューに関連するJavaScript関数にJSONデータを渡したい。しかし、Javascript関数から応答データを取得できません

  11. 11

    REST Web サービスで JSON を解析できません

  12. 12

    DelphiXEのWebサイトのAPIからjsonデータを取得して表示します

  13. 13

    WebサービスのURLからjson配列を取得します

  14. 14

    tableViewは、Webから解析されたデータをjson形式で表示できません

  15. 15

    jsonを使用してWebサービスからデータをフェッチしようとすると、データパラメータがnilになります

  16. 16

    PHPを使用してJSONに変換されたMYSQLから取得したデータを表示できません

  17. 17

    'contentType'が 'false'のときに、Ajaxを使用してWebサービスからXMLではなくJSONを返す

  18. 18

    PL / SQLからWebサービスを呼び出すときに、サポートされていないメディアタイプを取得しました

  19. 19

    Excel vbaを使用してWebサイトからデータを取得したいのですが、取得できません

  20. 20

    asmx Webサービスからデータを取得すると、Androidでエラーが発生します

  21. 21

    JavascriptはWebサービスからデータを取得します

  22. 22

    JSONからデータを取得しましたが、JSONobjectからArraylistにアクセスできません

  23. 23

    android-volleyを使用してJSON配列からカスタムリストビューにデータを取得することはできません

  24. 24

    Json配列をWebコアAPIに投稿できません

  25. 25

    SecurityNegotiationException-Webサービスからトークンを取得しています

  26. 26

    Javaを使用してWebサービスを通じてデータをJSON形式で公開するにはどうすればよいですか?

  27. 27

    ANDROID、WebサーバーからJSONデータを解析し、ListViewに表示します

  28. 28

    WEBサービスから受信したD3のJSONデータを使用するにはどうすればよいですか?

  29. 29

    github-pagesでホストされているWebサイトから受信したJSONデータを保存します

ホットタグ

アーカイブ