我想實現這樣的屬性,它的值只能讀取一次,然後屬性應設置爲nil
。只讀一次,然後設置爲零
我在這樣的方式來實現它:
private var _readOnce: String?
var readOnce: String? {
get {
let value = _readOnce
_readOnce = nil
return value
}
set {
_readOnce = newValue
}
}
readOnce = "Andrej"
print("read once = \(readOnce)") // prints read once = Optional("Andrej")\n"
print("read once = \(readOnce)") // prints read once = nil\n"
但I'feel就像使用一個單獨的屬性_readOnce
不是「SWIFTY」 /「最優雅」的方式來做到這一點。
有誰知道一種不同的方式,那將不需要使用單獨的屬性?
我可以確認上面的代碼有效,只是我覺得它可以更優雅,更少的線條來實現相同的行爲。
好奇......你爲什麼要這麼做? – Honey
我以爲我可以使用這種方法來反應推送通知,並確保我只反應一次。所以我一直在探索這種方法。但是現在看來,我必須採取不同的方法,因爲其他一些事情的行爲並不像我期望的那樣。 – Andrej
我不知道你的問題的確切問題。但是我正在考慮多種其他方式來解決這個問題1.只需要布爾屬性* somewhere * 2.在iOS 10中,不同的委託方法使得管理你想要的更容易。這就是說,如果你的通知有'content-available:1',那麼你的應用程序(_:didReceiveRemoteNotification:fetchCompletionHandler :)會被調用。如果用戶點擊通知「didreceivenotificationresponse」將被調用。如果用戶在應用程序中,將會調用'willPresentNotification'。 – Honey