2017-07-28 48 views
1

当我说不能在后台运行,我的意思是,当用户双击了他们的家按钮,刷卡时,该按钮将重新启用如何禁用一个按钮,即使它在swift中不在后台运行?

这是我viewDidLoad

if let waitingDate:Date = UserDefaults.standard.value(forKey: "waitingDate") as? Date 
    { 
     let currentDate = Date() 

     if(currentDate.compare(waitingDate) == ComparisonResult.orderedDescending) 
     { 
      getPointsOutlet.isEnabled = true 
     } 
    } 

代码这是代码在@IBAction func

getPointsOutlet.isEnabled = false 

let newDate = Calendar.current.date(byAdding: .day, value: 1, to: Date()) 

UserDefaults.standard.setValue(newDate, forKey: "waitingDate") 
+0

尝试DATEVALUE作为!日期 – Phyber

+0

并启用按钮检查:https://stackoverflow.com/questions/28571194/using-nsuserdefaults-to-add-a-24hour-countdown-timer-in-swift – Phyber

+0

试试这个:为设置UserDefaults.standard .set(Date(),forKey:“yourKey”)....用于获取UserDefaults.standard.object(forKey:“yourKey”)as!日期 – KKRocks

回答

3

来获取值经常检查使用保护或者让语句来防止死机: -

//Set value in user default 
UserDefaults.standard.set(Date(), forKey:"date") 
UserDefaults.standard.synchronize() 

//Get value from user default 
guard let value = UserDefaults.standard.object(forKey: "date") as? Date else {return} 
print(value) 
+0

等待为什么第二个不能是as!日期' –

+0

如果您的日期值为零,则会崩溃。 –

+0

@NikolayKhramchenko,是的,这也是好点! –

3

节省:

UserDefaults.standard.set(Date(), forKey:"date") 
UserDefaults.standard.synchronize() 

检索:

if let dateValue = clickdate.object(forKey: "date") as? Date{ 
    ... 
} 

为使按钮后24小时检查这篇文章:如果你想禁用按钮24小时,然后保存明天的日期 Enabling button after 24 hours

let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: Date()) 
UserDefaults.standard.set(tomorrow, forKey:"date") 

检查按钮是否应该启用:

let currentDate = Date() 

if(currentDate.compare(dateValue) == ComparisonResult.orderedDescending){ 
    //reenable button 
} 
+0

谢谢,我检查了另一篇文章,我将如何更改这个'let newDate = calendar.dateByAddingUnit(NSCalendarUnit.CalendarUnitDay,value:1,toDate:currentDate,options:NSCalendarOptions.allZeros)'为更新版本的swift? –

+0

Calendar.current.date(byAdding:.day,value:1,to:Date()) – Phyber

相关问题