2017-04-23 4 views
1

문제점을 해결하는 방법에 대한 조언을 받고 싶습니다. 그러나 내가 이미지를 얻을하지 않습니다구문 분석에서 컬렉션보기로 이미지로드 Swift

import UIKit 
import Parse 

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { 

    //var my_array:[String] = [] 
    //var my_array: [String] = [String]() 
    var imageResources : Array<UIImage> = [] 
    //var query = PFQuery(className: "User") 
    var query2 = PFQuery(className: "User") 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view, typically from a nib. 

     //my_array = ["montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg","montagne.jpeg"] 

     query2.findObjectsInBackground{ (objects: [PFObject]?, error: Error?) -> Void in 
      if error == nil { 
       print("OK") 

       for object in objects! { 
        print("IN FOR") 
        let thumbNail = object["image"] as! PFFile 
        thumbNail.getDataInBackground({ 
         (imageData: Data?, error: Error?) -> Void in 
         if (error == nil) { 
          print("IN SECOND IF") 
          let image = UIImage(data:imageData!) 
          self.imageResources.append(image!) 
          //let size = self.imageResources.count 
          //print(size) 
         } 
        }) 
       } 
      } 
     } 

     //query.findObjectsInBackground{ (objects: [PFObject]?, error: Error?) -> Void in 
      // if error == nil { 
      //   for object in objects! { 
      //    self.my_array.append(object.object(forKey: "image") as! String) 

        // } 
      // } 
     } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return imageResources.count 
    } 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     var cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell 
     cell.ImageView?.image = imageResources[indexPath.row] 
     return cell 

    } 
} 

내 응용 프로그램을 실행할 때이 오류가없는 : 나는, 나는 다음과 같은 코드를 사용하고 내 컬렉션보기로 구문 분석 서버에 저장된 이미지를로드 싶습니다 내 애플 리케이션에 컬렉션보기 내부. 이미지 내 구문 분석 서버에 있습니다 Parser Server Interface

난 그냥이 코드 내부 인쇄 print("IN FOR")이 인쇄되지 않는 것을 파악, 그래서 생각이 여기에 뭔가 잘못이며 왜 내 앱 나던 부하 아무것도 먹으 렴 :

query2.findObjectsInBackground{ (objects: [PFObject]?, error: Error?) -> Void in 
      if error == nil { 
       print("OK") 

       for object in objects! { 
        print("IN FOR") 
        let thumbNail = object["image"] as! PFFile 
        thumbNail.getDataInBackground({ 
         (imageData: Data?, error: Error?) -> Void in 
         if (error == nil) { 
          print("IN SECOND IF") 
          let image = UIImage(data:imageData!) 
          self.imageResources.append(image!) 
          //let size = self.imageResources.count 
          //print(size) 
         } 
        }) 
       } 

하지만 내 프로그램에서 수정 이미지를 사용하고 배열 (코드의 주석)에 저장하면 컬렉션보기에서 해당 이미지를 볼 수 있습니다. 누군가이 문제를 해결할 수 있도록 도와 줄 수 있습니까? 대단히 감사합니다.

조디.

+0

데이터가 수집 된 후 콜렉션 뷰를 다시로드하려고 시도하면 콜렉션 뷰의 콘센트를 가져 와서 for 루프 이후 collectionview.realodData()를 수행하십시오. – Hosny

+0

네, 그게 나에게 프로젝트를 청소하려고하거나 @IBOutlet var outletOfCollectionView : UICollectionView를 작성하십시오! 그런 다음 콜렉션 뷰 컨트롤을 첨부하십시오. – Hosny

+0

이봐 요, 답해 주셔서 고맙습니다. 같은 일이 있습니다. for 루프 안에 들어 가지 않기 때문에 루프에 문제가있는 것 같아요. 인쇄하고 싶을 때. (print ("IN FOR")) 콘솔에 나타나지 않습니다. – Jordy

답변

1

사용자 클래스는 구문 분석의 클래스에 내장 내부적으로 쿼리는 다음과 같아야하므로, (밑줄) _User라는 : 컴팩트,

var query2 = PFQuery(className: "_User") 

또는 :

var query2 = PFUser.query() 

편집

사용자와 자신의 이미지를 가져 오는 한 후, 당신은 그것을 확인하기 위해 콜렉션 뷰를 다시로드해야 새로운 데이터를 인식한다. 이 경우 당신이 배경 큐에 있기 때문에, 당신은 그렇게 할 주요 큐에 파견해야한다 :

그러나
for object in objects! { 
    // ... 
} 
DispatchQueue.main.async { 
    self.collectionView.reloadData() 
}  

, 나는 코드에서 UICollectionView 표시되지 않습니다; 델리게이트 및 데이터 소스 프로토콜 만 구현합니다. UIViewController 대신 서브 클래스 UICollectionViewController을 사용하는 것이 좋습니다.

+0

고맙습니다. for 루프가 작동하지만 이미지가 표시되지 않습니다. 사용자 클래스 이름에 열 이름을 지정해야합니까? 내가 여기서하고 있다고 생각 : thumbNail = object [ "image"] let as PFFile – Jordy

+0

이 문제를 해결하기 위해 내 대답을 편집했습니다. 제발 ... –

+0

큰 뚱뚱한 큰 고맙습니다 :) 그것은 작동합니다 :) – Jordy