使用上传日期不断修改孩子
Posted
技术标签:
【中文标题】使用上传日期不断修改孩子【英文标题】:Modifiy child constantly by using the UploadDate 【发布时间】:2017-05-04 12:07:46 【问题描述】:我目前正在构建 Instagram 克隆。 我是新手,所以如果这个问题很容易回答,请原谅我。
我只想为每个帖子附加一个特定的分数。 我已经设法给每个新帖子打了 0f 0 分,每次喜欢它都会增加 100,不喜欢它会减少 100。 对于每条评论,它都会增加 50 分。 因为我想巧妙地对它们进行排序,并希望它随着时间的推移在顶部显示不同的帖子,所以我想包括第三个影响分数的变量。
我希望它自上传后每小时将分数降低 -10。
增加和减少是在我的函数 incrementLikes() /incrementComments() 中完成的。 我知道自从它上传到那里后,我无法修改 score 的值,但我不知道还有哪里。
我的日期扩展(我可以在哪里做呢?)
延期日期
func timeAgoDisplay() -> String
let secondsAgo = Int(Date().timeIntervalSince(self))
let minute = 60
let hour = 60 * minute
let day = hour * 24
let week = day * 7
let month = week * 4
let quotient : Int
let unit: String
if secondsAgo < minute
quotient = secondsAgo
unit = "Sekunde"
else if secondsAgo < hour
quotient = secondsAgo / minute
unit = "Minute"
else if secondsAgo < day
quotient = secondsAgo / hour
unit = "Stunde"
else if secondsAgo < week
quotient = secondsAgo / day
unit = "Tage"
else if secondsAgo < month
quotient = secondsAgo / week
unit = "Woche"
else
quotient = secondsAgo / month
unit = "Monat"
return "Vor \(quotient) \(unit)\(quotient == 1 ? "" : "n")"
我在 homeTableViewCell 中设置日期的函数
func updateView()
captionLabel.userHandleLinkTapHandler = label,string, range in
let mention = String(string.characters.dropFirst())
API.User.observeUserByUsername(username: mention.lowercased(), completion: (user) in
self.delegate?.goToProfileUserViewController(userId: user.id!)
)
guard let count = post?.commentCount else return
if count == 0
commentButton.setTitle("Schreibe den ersten Kommentar", for: UIControlState.normal)
else if count == 1
commentButton.setTitle("Sieh dir den ersten Kommentar an", for: UIControlState.normal)
else
commentButton.setTitle("Alle \(count) Kommentare ansehen", for: UIControlState.normal)
let timeAgoDisplay = post?.creationDate?.timeAgoDisplay()
timeLabel.text = timeAgoDisplay
感谢您的帮助:)
【问题讨论】:
您可以安排一个计时器并将其命中时间设置为一个小时,然后执行任何需要的操作。 我认为这对我没有帮助 【参考方案1】:使用时间每小时更新分数的想法是基于应用程序不断运行的想法,这似乎有缺陷。 你可以有类似的东西
var score: Int
return likes*100 - dislikes*100 + comments*50 - hoursSinceUpload()*10
hoursSinceUpload 的计算方式类似于(参见 Getting the difference between two NSDates in (months/days/hours/minutes/seconds) 以供参考)
func hoursSinceUpload() -> Int
return Calendar.current.dateComponents([.hour], from: uploadDate, to: Date()).hour
【讨论】:
嘿,谢谢,这似乎是个好主意。您将如何计算 hoursSinceUpload() ? 更新了我的答案 非常感谢,有时间我会试试的。实际上,这就是我一直在寻找的,从这两个日期中获取差异以及轻松乘以 lt 来降低分数 我做了一个现在可以正常工作的解决方案,所有帖子在重新加载时都会更新。 很高兴我能提供帮助。如果您能接受我的回答,那就太好了。以上是关于使用上传日期不断修改孩子的主要内容,如果未能解决你的问题,请参考以下文章