我想獲得一些建議如何解決問題。我想存儲的解析服務器上的圖像加載到我的收藏觀,我使用下面的代碼:從解析加載圖像到集合視圖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)
}
})
}
但是,當我在我的程序中使用修復的圖像,並且我存儲在一個Array(評論中的代碼)中時,我可以在我的收藏視圖中看到這些圖像... 有人可以幫助我解決此問題嗎?太感謝了。
Jordy。
嘗試在數據到達後重新載入集合視圖,嘗試爲您的集合視圖取出插座並在for循環後執行collectionview.realodData()。 – Hosny
是的,發生在我身上,嘗試清理項目,或寫@IBOutlet var outletOfCollectionView:UICollectionView!然後將其附加到集合視圖控件 – Hosny
嘿,感謝您的回答,我得到了同樣的東西,我認爲這就像循環有問題,因爲它不會進入for循環...當我想要打印(打印(「IN FOR」))它不出現在控制檯中。 – Jordy