[英]Swift- Use data through app
我正在开发每日应用程序的报价,所以我创建了一个报价类:
import Foundation
class Quote {
let quote: String?
let author: String?
let backgroundImage: UIImage?
}
然后,我创建了一个加载屏幕,该屏幕从外部数据库获取当天数据的报价,并从带有数据影响的Quote类中创建一个新实例:
import UIKit
import Parse
class LoadingViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//
//check for internet connection and fecth data
//
//assign each data to a variable of quote object
///q, a and bI are variables that represents quote, author and image
let quoteOfTheDay = Quote()
quoteOfTheDay.quote = q
quoteOfTheDay.author = a
quoteOfTheDay.backgroundImage = bI
//---perform segue to main view controller
}
}
之后,我想与所有其他viewController共享一天实例的报价,直到我的应用终止。 如果退出,则将再次将用户定向到加载视图控制器以获取数据。 否则,此quoteOfTheDay实例需要保持活动状态,并被其他屏幕使用,就像在应用程序处于活动状态时被缓存一样。 我怎样才能做到这一点?
请注意,我不想继续使用prepareForSegue传递此实例。
谢谢!
您可以像这样使用单例:
import Foundation
class Quote {
let quote: String?
let author: String?
let backgroundImage: UIImage?
class var sharedInstance: Quote {
struct Singleton {
static let instance = Quote()
}
return Singleton.instance
}
}
现在您可以打电话
Quote.sharedInstance
在此处快速了解有关设计模式的更多详细信息
您将在此处找到很多有关singleton的代码演示
@rmaddy和@adamPro提出了我忘记提及的重要方面:
您可以在Quote类中设置一个静态属性来存储当天的报价。
class Quote: NSObject {
static var quoteOfTheDay: Quote?
//Other Quote Code...
}
然后访问:
let quote = Quote.quoteOfTheDay as Quote!
请记住,但是如果您尝试使用上述方法访问quoteOfTheDay为nil时,应用程序将崩溃。 因此,您可能要考虑以更安全的方式访问它,或者不将其存储为可选内容。
您是否考虑过将Quote对象写入磁盘档案? 也许在应用程序支持中? 通过使用利用报价产生日期的命名约定,用户甚至可以在同一天的后续启动中检索它。 然后,您可以在另一天的下一次启动时将其删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.