gpt4 book ai didi

ios - 如何按 "created_time"对我的照片 NSMutable 数组中的图像进行排序,并让我的收藏 View 相应地显示它们?

转载 作者:行者123 更新时间:2023-11-28 09:17:17 24 4
gpt4 key购买 nike

//
// 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”调用 instagram 的 API 以获取他们的 20 张最新照片。然后我解析 imageUrls 的数据,将它们放入两个单独的 for in 循环中,在循环中我获取这些 imageUrls 并将它们更改为 UIImages 并将它们放入“let photos = NSMutableArray()”。然后我将 UIimage 添加到我的 Collection View 单元格“cell.imageView.image = photos.objectAtIndex(indexPath.row) as?UIImage”

我还计算我解析的 NSdictionary 响应,例如“self.photoCount = tuulavintageImageResponse.count + wendyslookbookImageResponse.count as Int”。所以我可以告诉我的 Collection View 要制作多少个单元格

这里也可以看到(全局主队列里面)"var tuulavintageTimeResponse = tuulavintageDictionary.valueForKeyPath("data.created_time") as NSArray"

在这里

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

我解析我的 NSDictionary 响应以检索每个图像的 unixtimecode 数组,但它们没有连接。

我的问题是,如何使用我可以检索的 unixtimecode 命令这些照片在发布时显示在我的收藏 View 中?我有一种感觉,我需要将 UIimage 与它们的特定时间码相匹配,然后以某种方式告诉我的 Collection View 按 unixtime 对它们进行排序。

提前致谢。

最佳答案

好吧,您不必创建文件,但这是保持文件美观整洁的好习惯。

尝试在相同的 Controller 文件中但在 Controller 定义之外或在新的 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

关于ios - 如何按 "created_time"对我的照片 NSMutable 数组中的图像进行排序,并让我的收藏 View 相应地显示它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26956351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com