簡體   English   中英

如何顯示CloudKit中距離今天最近的帖子?

[英]How can I show the post closest to today's date from CloudKit?

我正在開發一個社交媒體應用,以便與CloudKit一起娛樂,而我一直被困在首先顯示最新發布的圖像的問題上。

我在CloudKit上設置了記錄類型,以將圖片和日期發布,該日期以編程方式設置為iPhone發布的日期。

這是我在打開應用程序時顯示圖像的代碼:

override func viewDidAppear(animated: Bool) {
    let container = CKContainer.defaultContainer()
    let publicDatabase = container.publicCloudDatabase
    let predicate = NSPredicate(value: true)
    let query = CKQuery(recordType: "Post", predicate: predicate)

    publicDatabase.performQuery(query, inZoneWithID: nil) { results, error in
        if error == nil { // There is no error
            results
            print("No Error")
            if results!.count > 0 {
                print("Found some")
                self.newResults = results!
                let randomNumber = arc4random_uniform(UInt32(results!.count - 1)) + 0
                let randomNumberInt = Int(randomNumber)
                let record = results![randomNumberInt]
                let img = record.valueForKey("Picture") as? CKAsset
                let image = UIImage(contentsOfFile: img!.fileURL.path!)
                self.imageView.image = image
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                })
            }
        }
        else {
            print(error)
        }
    }
}

目前,此代碼僅在results數組中顯示隨機圖像。 但是我想以某種方式對結果進行排序,並使用DatePosted CloudKit記錄類型屬性顯示最新發布的圖像。 我完全不知道該怎么做,因此非常感謝您的幫助!

這段代碼向您展示了基礎知識。 它沒有最新的信息,也有最舊的信息,但是您可以確定它是正確的:)在您可以在此閱讀的日期上使用了非常出色且非常有趣的快捷方式。

http://www.globalnerdy.com/2015/02/02/how-to-work-with-dates-and-times-in-swift-part-three-making-date-arithmetic-more-swift-like/

 func cleanup4Cloud() {
    let container = CKContainer(identifier: "iCloud.ch")
    let publicDB = container.publicCloudDatabase
   let predicate = NSPredicate(value: true)
    let query = CKQuery(recordType: "Blah", predicate: predicate)
    query.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

    cleanUpOperation = CKQueryOperation(query: query)
    cleanUpOperation.desiredKeys = ["record.recordID.recordName"];

    cleanUpOperation.recordFetchedBlock = { (record) in
        self.recordsRead.append(record.recordID)
        let recordDOC = record["creationDate"] as! NSDate

        let newTimeInterval = 4.hours.fromNow

        let formatter = NSDateFormatter()
        formatter.dateStyle = .NoStyle
        formatter.timeStyle = .MediumStyle

        let string = formatter.stringFromDate(newTimeInterval)
        let string2 = formatter.stringFromDate(recordDOC)

        if newTimeInterval.timeIntervalSinceReferenceDate >  recordDOC.timeIntervalSinceReferenceDate {
         print("recordDOC is older than \(string2) [\(string)]")
        }
    }
    cleanUpOperation.queryCompletionBlock = {(cursor, error) in
        if error != nil {
            print("ting, busted",error!.localizedDescription)
        } else {
           print("self.recordsRead.count \(self.recordsRead.count)")
            self.cleanOutDB()
        }

    }
    cleanUpOperation.qualityOfService = .Background

    publicDB.addOperation(cleanUpOperation)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM