如何通过“created_time”在我的photosNSMutable数组中sorting我的图像,并获得我的集合视图以相应显示它们?

// // ViewController.swift // Fashun // // Created by Alex Macleod on 20/10/14. // Copyright (c) 2014 Alex Macleod. All rights reserved. // import UIKit class ViewController: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource { var collectionView: UICollectionView? var instanceOfCustomObject: CustomObject = CustomObject() var accessToken: NSString! = "14128167.52d0add.2fbff9669d9141099597cbb8d67764a4" var userDefaults: NSUserDefaults! let colorWheel = ColorWheel() var photoCount: Int! = 0 let photos = NSMutableArray() override func viewDidLoad() { super.viewDidLoad() // userDefaults = NSUserDefaults.standardUserDefaults() // self.accessToken = userDefaults!.objectForKey("accessToken") as NSString // println(self.accessToken) // instanceOfCustomObject.someProperty = "Hello World" // var accessToken : NSString? = NSString(instanceOfCustomObject.accessToken) // println(accessToken) // instanceOfCustomObject.authorize() // Do any additional setup after loading the view, typically from a nib. let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() // layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0) layout.itemSize = CGSize(width: 124, height: 124) layout.minimumInteritemSpacing = 1.0 layout.minimumLineSpacing = 1.0 collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout) collectionView!.dataSource = self collectionView!.delegate = self collectionView!.registerClass(Cell.self, forCellWithReuseIdentifier: "Cell") collectionView!.backgroundColor = UIColor.whiteColor() self.view.addSubview(collectionView!) getData() // imageCount() } func getData() -> Void { let tuulavintageUrl = NSURL(string:"https://api.instagram.com/v1/users/7522782/media/recent/?access_token=\(self.accessToken)") let wendyslookbookUrl = NSURL(string:"https://api.instagram.com/v1/users/14454619/media/recent/?access_token=\(self.accessToken)") // let sharedSession = NSURLSession.sharedSession() // let downloadTask: NSURLSessionDownloadTask = sharedSession.downloadTaskWithURL(baseUrl!, completionHandler: { (location: NSURL!, response: NSURLResponse!, error: NSError!) -> Void in // var urlContents = NSString.stringWithContentsOfURL(location, encoding: NSUTF8StringEncoding, error: nil) // println(urlContents) let tuulavintageData = NSData(contentsOfURL: tuulavintageUrl!) let wendyslookbookData = NSData(contentsOfURL: wendyslookbookUrl!) if (tuulavintageData != nil) & (wendyslookbookData != nil) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { let tuulavintageDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(tuulavintageData!, options: nil, error: nil) as NSDictionary let wendyslookbookDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(wendyslookbookData!, options: nil, error: nil) as NSDictionary // println(tuulavintageDictionary) var tuulavintageImageResponse = tuulavintageDictionary.valueForKeyPath("data.images.standard_resolution.url") as NSArray var tuulavintageTimeResponse = tuulavintageDictionary.valueForKeyPath("data.created_time") as NSArray // println(tuulavintageTimeResponse) var wendyslookbookImageResponse = wendyslookbookDictionary.valueForKeyPath("data.images.standard_resolution.url") as NSArray var wendyslookbookTimeResponse = wendyslookbookDictionary.valueForKeyPath("data.created_time") as NSArray println(wendyslookbookTimeResponse) for imageUrls in tuulavintageImageResponse { var imageUrlsAsStrings: NSString = imageUrls as NSString var imageAsNsurls = NSURL(string: imageUrlsAsStrings) var err: NSError? var imageData :NSData = NSData(contentsOfURL: imageAsNsurls!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)! self.photos.addObject(UIImage(data:imageData)!) // println(self.photos) } for imageUrls in wendyslookbookImageResponse { var imageUrlsAsStrings: NSString = imageUrls as NSString var imageAsNsurls = NSURL(string: imageUrlsAsStrings) var err: NSError? var imageData :NSData = NSData(contentsOfURL: imageAsNsurls!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)! self.photos.addObject(UIImage(data:imageData)!) // println(self.photos) } dispatch_async(dispatch_get_main_queue(), { () -> Void in self.photoCount = tuulavintageImageResponse.count + wendyslookbookImageResponse.count as Int self.collectionView?.reloadData() }) }) } else { let networkIssueController = UIAlertController(title: "Error", message: "Something went wrong get a better phone you pleb!", preferredStyle: .ActionSheet) let okButton = UIAlertAction(title: "OK", style: .Default, handler: nil) networkIssueController.addAction(okButton) let cancelButton = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) networkIssueController.addAction(cancelButton) self.presentViewController(networkIssueController, animated: true, completion: nil) dispatch_async(dispatch_get_main_queue(), { () -> Void in //Stop refresh animation }) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return photoCount } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as Cell // println(photos) // cell.textLabel.text = "Text" cell.imageView.image = photos.objectAtIndex(indexPath.row) as? UIImage // cell.photo = self.photos[indexPath.row] as? NSDictionary cell.imageView.backgroundColor = colorWheel.randomColor() return cell } } 

正如你所看到的,我正在为两个独立的用户“tuulavintage”和“wendyslookbook”为他们最近的20张照片打电话给instagram的API。 然后我parsingimageUrls的数据,把它们放到两个单独的循环中,我把这些imageUrls和更改为UIImages,并把它们放在“让照片= NSMutableArray()”。 然后我将UIimages添加到我的集合视图单元格“cell.imageView.image = photos.objectAtIndex(indexPath.row)as?UIImage”

我也计算我的parsingNSdictionary响应像“self.photoCount = tuulavintageImageResponse.count + wendyslookbookImageResponse.count为Int”。 所以我可以告诉我的collections查看要制作多less个单元格

你也可以在这里看到(在全局主要内部)“var tuulavintageTimeResponse = tuulavintageDictionary.valueForKeyPath(”data.created_time“)as NSArray”

和这里

“var wendyslookbookTimeResponse = wendyslookbookDictionary.valueForKeyPath(”data.created_time“)as NSArray”

我parsing我的NSDictionary响应检索每个图像的unixtimecode数组,但他们没有连接。

我的问题是,如何使用我可以检索的unixtimecode在订阅视图中显示这些照片? 我有一种感觉,我需要匹配的UIimage与他们的具体时间码,然后以某种方式告诉我的集合视图,以unixtime命令他们。

提前致谢。

以及你不必创build一个文件,但是很好的做法,保持事情的漂亮和整洁。

请尝试在相同的控制器文件中,但在您的控制器定义之外,或者在新的Swift文件中。

 class IGPhotoContainer { var image: UIImage! var timestamp: String = "" //Your constructor can be like this init() { } //or overload it with 2 params for your convenience. init(newimage: UIImage, newtime: String){ this.image = newimage this.timestamp = newtime } } 

如果你在一个单独的文件中执行它,请记住在新文件的开头添加这行代码。

 import UIKit