我有一个 iOS 应用程序,它也有今天的扩展。我正在尝试从主容器应用程序提供今天的扩展数据,但有很多用于保存数据的可解码模型类。
我的问题是:
使用 userDefaults 从容器中获取/设置数据是否更好 进入扩展或将今天的扩展目标包含在所有的 模型类?
是否在 todayExtension 目标中包含了很多类导致 性能问题或电池耗尽或类似问题?
谢谢。
*编辑 我的模型类的一个例子是:
class Alert : Codable {
var type : String?
var sequence : Int?
var status : String?
var issueTimeText : String?
var expiryTime : String?
var alertId : String?
var alertBannerText : String?
var alertHeaderText : String?
var bannerColour : String?
var zones : [String]?
// TEXT IS [STRING], STRING FOR TESTING
var text : String?
var tcisURL : String?
enum CodingKeys: String, CodingKey {
case type = "type";
case sequence = "sequence";
case status = "status";
case issueTimeText = "issueTimeText";
case expiryTime = "expiryTime";
case alertId = "alertId";
case alertBannerText = "alertBannerText";
case alertHeaderText = "alertHeaderText";
case bannerColour = "bannerColour";
case text = "text";
case zones = "zones";
case tcisURL = "tcisURL";
}
init(inType: String, inIssueTimeText:String, inBannerText:String, inText: String, inColor: String) {
self.type = inType
self.issueTimeText = inIssueTimeText
self.alertBannerText = inBannerText
self.text = inText;
self.bannerColour = inColor
}
最佳答案
这完全取决于您希望数据如何进入 today 扩展。是的,我发现用户默认值是最好的。您必须在应用程序和今日扩展中创建应用程序组。用户默认如何使用今天的扩展。因此,当您想将数据保存到用户默认值(通过按钮或更新计时器)时,您将需要此代码 UserDefaults.init(suiteName: "group.com.bundleID.appName")?.setValue(textfield .text, forKey: "name")
这就是它的保存方式。在 viewDidAppear(_ animated: Bool)
下的 today 扩展中,您需要检索数据并将其放在标签上,因此请编写此代码。 if let name = UserDefaults.init(suiteName: "group.com.bundleID.appName")?.value(forKey: "name")
{
label.text = 名称为?字符串
它应该工作。我在 YouTube 上也有关于这个确切教程的视频。 https://www.youtube.com/watch?v=skbWSQlcN5k
希望这对你有帮助,内森
关于iOS 今天扩展目标容器类或 userdefaults 的成员资格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49433781/