- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个基于日期的应用程序。我正在尝试获取从一个 TableViewController 传递到另一个 TableViewController 的信息。
这是一个基于通知的应用程序,可以提醒用户今天有事情发生。因此,在它发布的那一天,我希望它从发布列表中消失并进入发布列表(因此,如果有东西在 11 月 8 日发布,那么在那一天它将被移动到发布列表中)。
我无法让它正常工作。我使用了下面的代码,日期来了又去,没有发生任何事情,它仍然显示在发布列表上。
下面是我在发布列表中使用的代码:
let startOfToday = Calendar.current.startOfDay(for: Date()) as NSDate
let predicate = NSPredicate(format: "release_date > %@", startOfToday)
fetchRequest.predicate = predicate
这是已发布列表中的代码:
let startOfToday = Calendar.current.startOfDay(for: Date()) as NSDate
let predicate = NSPredicate(format: "release_date < %@", startOfToday)
fetchRequest.predicate = predicate
这是 FreshReleaseTableViewController 的代码:
import UIKit
import CoreData
import UserNotifications
class FreshReleaseTableViewController: UITableViewController{
var freshreleases = [Release_Date]()
let dateFormatter = DateFormatter()
override func viewDidLoad() {
super.viewDidLoad()
//create a new button
let button = UIButton.init(type: .custom)
//set image for button
button.setImage(UIImage(named: "Mic App Logo.png"), for: UIControlState.normal)
dateFormatter.dateStyle = .full
dateFormatter.timeStyle = .none
}
@objc func editAction() {
let viewController = AddfreshreleaseViewController()
navigationController?.present(viewController, animated: true, completion: nil)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let fetchRequest = Release_Date.fetchRequest() as NSFetchRequest<Release_Date>
let sortDescriptor1 = NSSortDescriptor(key: "artist", ascending: true)
let sortDescriptor2 = NSSortDescriptor(key: "album", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor1, sortDescriptor2]
do {
freshreleases = try context.fetch(fetchRequest)
} catch let error {
print("Could not fetch because of error: \(error).")
}
let startOfToday = Calendar.current.startOfDay(for: Date()) as NSDate
let predicate = NSPredicate(format: "release_date > %@", startOfToday)
fetchRequest.predicate = predicate
tableView.reloadData()
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return freshreleases.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "FreshReleaseCellIdentifier", for: indexPath)
let freshrelease = freshreleases[indexPath.row]
cell.textLabel?.numberOfLines = 0
let artist = freshrelease.artist ?? ""
let album = freshrelease.album ?? ""
cell.textLabel?.text = artist + "'s\nnew album '" + album + "'\nreleases"
if let date = freshrelease.release_date as Date? {
cell.detailTextLabel?.text = dateFormatter.string(from: date)
} else {
cell.detailTextLabel?.text = ""
}
return cell
}
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
// Override to support editing the table view.
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if freshreleases.count > indexPath.row {
let freshrelease = freshreleases[indexPath.row]
// Remove notification
if let identifier = freshrelease.release_dateId {
let center = UNUserNotificationCenter.current()
center.removePendingNotificationRequests(withIdentifiers: [identifier])
}
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
context.delete(freshrelease)
freshreleases.remove(at: indexPath.row)
do {
try context.save()
} catch let error {
print("Could not save \(error)")
}
tableView.deleteRows(at: [indexPath], with: .fade)
}
}
@available(iOS 11.0, *)
override func tableView(_ tableView: UITableView,
leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
let modifyAction = UIContextualAction(style: .normal, title: "Edit", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
print("Update action ...")
let MainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let vc : UIViewController = MainStoryboard.instantiateViewController(withIdentifier: "FreshReleaseEdit") as UIViewController
self.present(vc, animated: true, completion: nil)
success(true)
})
modifyAction.title = "Edit"
modifyAction.backgroundColor = .blue
return UISwipeActionsConfiguration(actions: [modifyAction])
}
override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
return true
}
}
这是 ReleasedTableViewController 的代码:
import UIKit
import CoreData
import UserNotifications
class ReleasedTableViewController: UITableViewController{
var freshreleases = [Release_Date]()
let dateFormatter = DateFormatter()
override func viewDidLoad() {
super.viewDidLoad()
//create a new button
let button = UIButton.init(type: .custom)
//set image for button
button.setImage(UIImage(named: "Mic App Logo.png"), for: UIControlState.normal)
dateFormatter.dateStyle = .full
dateFormatter.timeStyle = .none
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let fetchRequest = Release_Date.fetchRequest() as NSFetchRequest<Release_Date>
let sortDescriptor1 = NSSortDescriptor(key: "album", ascending: true)
let sortDescriptor2 = NSSortDescriptor(key: "artist", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor1, sortDescriptor2]
do {
freshreleases = try context.fetch(fetchRequest)
} catch let error {
print("Could not fetch because of error: \(error).")
}
let startOfToday = Calendar.current.startOfDay(for: Date()) as NSDate
let predicate = NSPredicate(format: "release_date < %@", startOfToday)
fetchRequest.predicate = predicate
tableView.reloadData()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return freshreleases.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "FreshReleaseCellIdentifier", for: indexPath)
let freshrelease = freshreleases[indexPath.row]
cell.textLabel?.numberOfLines = 0
let artist = freshrelease.artist ?? ""
let album = freshrelease.album ?? ""
cell.textLabel?.text = artist + "'s \nnew album '" + album + "'\nreleases"
if let date = freshrelease.release_date as Date? {
cell.detailTextLabel?.text = dateFormatter.string(from: date)
} else {
cell.detailTextLabel?.text = ""
}
return cell
}
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if freshreleases.count > indexPath.row {
let freshrelease = freshreleases[indexPath.row]
// Remove notification
if let identifier = freshrelease.release_dateId {
let center = UNUserNotificationCenter.current()
center.removePendingNotificationRequests(withIdentifiers: [identifier])
}
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
context.delete(freshrelease)
freshreleases.remove(at: indexPath.row)
do {
try context.save()
} catch let error {
print("Could not save \(error)")
}
tableView.deleteRows(at: [indexPath], with: .fade)
}
}
@available(iOS 11.0, *)
override func tableView(_ tableView: UITableView,
leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
let modifyAction = UIContextualAction(style: .normal, title: "Update", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
print("Update action ...")
success(true)
})
modifyAction.title = "Edit"
modifyAction.backgroundColor = .blue
return UISwipeActionsConfiguration(actions: [modifyAction])
}
override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
return true
}
}
最佳答案
对此有许多潜在的解决方案。
我建议的最简单的方法是你的 View Controller 监听 UIApplicationDidBecomeActiveNotification
。当此通知触发时,您可以运行重建您的提取请求并再次执行它。然后,这将为您提供列表的最新版本。
另一种选择是稍微更改您的数据模型,以在数据模型中包含 isReleased
标志。现在,在您的应用程序委托(delegate)中,您可以实现 applicationDidBecomeActive
。调用此方法时,您可以触发数据库更新以刷新 isReleased
标志。在 View Controller 中,您可以使用 NSFetchedResultController
并将查询的谓词更改为:
// Unreleased movies
fetchRequest.predicate = NSPredicate(format: "isReleased = NO")
// Released movies
fetchRequest.predicate = NSPredicate(format: "isReleased = YES")
获取的结果 Controller 具有委托(delegate)协议(protocol),可让您监听底层数据存储的更改,从而使您有机会更新 UI。
关于ios - 一旦日期过去,将数据从一个 TableViewController 传输到另一个 TableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53240343/
我有一些文档,它的创建时间以毫秒为单位。我需要将它们分为今天、昨天、过去 7 天、过去 30 天、超过 30 天。 我使用了以下代码:convertSimpleDayFormat(1347022979
我正在尝试创建一个 Crystal 报告,用于在图表中显示十二个月的月费率。 对于此任务,我有一个 dc_date(mm/dd/yyyy) 作为变量,我将其更改为 mmyyyy 格式。但是当我看到月份
我想使用 Linux 命令将年转换为天(过去)。例如: 用户给出的号码:10年前 程序应计算 10 年前的天数总和(例如:10*12*31(年/月/日)--> 3720 天)。 程序将其与今年开始的当
我的要求有点复杂,为了便于理解,让我用简单的例子说明一下。假设,我们必须计算过去 12 个月消费者按月购买的产品数量。所以我们要做的是: SELECT DATENAME(MONTH, m.Invoic
如果我今天(2012 年 8 月 21 日)运行查询,我想得到这个结果集: [...] 为了得到这个,我正在使用以下内容,但它似乎过于复杂。这可以简化吗? ;WITH Numbers_cte([num
这是我目前用来显示下周五日期的方法。 $date_friday = date('F j', strtotime('Friday')); print $date_friday; 我应该使用什么来显示过去
我有一个包含一个日期时间列的表。我只需要返回过去 6 个月的行。这可以通过 来完成 where datetime_column > DATEADD(m, -6, current_timestamp)
我正在为我的应用使用 Firestore,并且希望能够获得过去 7 天内发布的最受欢迎的项目。在理想的情况下,调用看起来像这样: let calendar = Calendar.cur
我有以下方法来计算时间: public static String sumTime(String date1, String date2) throws ParseException { Ca
我想检索过去 24 小时内发布的观看次数最多的前 10 个主题。如果网站在过去 24 小时内获得的主题少于 10 个,则必须检索前一天剩余的浏览次数最多的主题。 我以unix格式将时间存储在数据库中,
我想从我的 MySQL 服务器获取过去 x 个月的所有记录。例如使用 2 个月(不是过去 2 个月,比如过去 60 天,而是过去整个月等等。如果实际月份是 4 月,我想要 2 月和 3 月的所有记录)
我正在尝试使用 php 创建一个博客系统,我需要一种方法来计算过去 21 天内浏览次数最多的帖子。有人知道这样做的好方法吗? 我对 php 没有太多经验,所以我需要有人给我指出正确的方向。我试图研究
我正在尝试查找过去 26 周每周结束时的用户总数。 例如, 从第 26 周开始,该周有 100 名用户注册,并且有 20 名新用户注册,因此到第 26 周结束时,注册用户数量为 120 名 从第 25
假设我们有下表,列如下所示: Rides ride_id start_time end_time passenger_id driver_id ride
好的,我正在尝试获取过去 24 小时内包含“价格”列的所有行的平均值。 $tickerBuy = $this->model->ticker("date AS datetime, avg(price)
我有一个账户表,其中名为“dateCreation”的列是账户的创建日期。 我想获取过去 12 个月内创建的所有帐户,但有时 2 个月或更长时间都没有创建帐户。在这几个月里,我希望 mysql 返回
是否有办法检索过去 7 天内添加的所有用户?添加用户时,包含时间戳。日期被添加到他们的“信息”中。 例如这样: 因此日期公式为:D/M/YYYY。谁能帮我理解如何做到这一点? PS:奇怪的OL3gee
我有一个 Angualr 服务,可以列出从当前月份开始的 12 个月和年份: JS: app.factory('12months', function() { return {
我有一个弹出窗口,其中一个名为 fade 的元素应该扩展到屏幕的整个宽度(当没有可滚动内容时它会这样做)。但是,当内容超过浏览器窗口的 100% 时,它不会扩展到页面高度的 100%。 如果我设置 h
我正在尝试选择过去 5 天的整数字段的总和,我需要将它分组为每一天。 我在确定分组时遇到了一些问题。到目前为止,这是我的 sql 查询: select sum(`amount_sale`) a
我是一名优秀的程序员,十分优秀!