iOS - 每天只对 TodayViewController(Widget)执行一次操作
iOS - Do action on TodayViewController (Widget) only once a day
我目前正在我们的 Widget 上做一些统计。
我希望能够在小部件的 viewWillAppear
方法中计算访问次数,但一天最多只能计算一次。
首先,我想到了一个布尔值,但是它会被释放,所以我会失去这个布尔值的引用对吗?
然后我想知道 dispatch_once
是否可以解决我的问题。
static dispatch_once_t once;
dispatch_once(&once, ^ {
});
大家怎么看?
我不希望我的统计数据不准确,因为用户一天从主页加载和显示小部件数百次。
这就是为什么我只想每天限制计数方法一次。
PS : 我正在开发 Objective C
每次发送事件时只存储当前日期。然后只需检查存储的日期是否为今天。
如果不是,则发送事件并相应地更新存储的日期。
Swift 中的示例(未测试):
let defaults = UserDefaults.standard
let dateOfLastEvent = defaults.string(forKey: "DateOfLastEvent")
let currentDate = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyyMMdd"
let currentDateString = formatter.string(from: currentDate)
if (currentDateString != dateOfLastEvent) {
// Send the event
defaults.set(currentDateString, forKey: "DateOfLastEvent")
}
我目前正在我们的 Widget 上做一些统计。
我希望能够在小部件的 viewWillAppear
方法中计算访问次数,但一天最多只能计算一次。
首先,我想到了一个布尔值,但是它会被释放,所以我会失去这个布尔值的引用对吗?
然后我想知道 dispatch_once
是否可以解决我的问题。
static dispatch_once_t once;
dispatch_once(&once, ^ {
});
大家怎么看?
我不希望我的统计数据不准确,因为用户一天从主页加载和显示小部件数百次。
这就是为什么我只想每天限制计数方法一次。
PS : 我正在开发 Objective C
每次发送事件时只存储当前日期。然后只需检查存储的日期是否为今天。 如果不是,则发送事件并相应地更新存储的日期。
Swift 中的示例(未测试):
let defaults = UserDefaults.standard
let dateOfLastEvent = defaults.string(forKey: "DateOfLastEvent")
let currentDate = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyyMMdd"
let currentDateString = formatter.string(from: currentDate)
if (currentDateString != dateOfLastEvent) {
// Send the event
defaults.set(currentDateString, forKey: "DateOfLastEvent")
}