iOS 今天扩展目标容器类或 userdefaults 的成员资格?

标签 ios swift today-extension

我有一个 iOS 应用程序,它也有今天的扩展。我正在尝试从主容器应用程序提供今天的扩展数据,但有很多用于保存数据的可解码模型类。

我的问题是:

  1. 使用 userDefaults 从容器中获取/设置数据是否更好 进入扩展或将今天的扩展目标包含在所有的 模型类?

  2. 是否在 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/

相关文章:

ios - 如何同步单元格展开/折叠和 Collection View 动画?

ios - Swift iOS - 使用 PDFKit 和 UI 将文本叠加到 PDF 上

ios - 如何自动从号码列表中调用?

ios - 如何使用 Swift 在我的应用程序中的 Today Extension 中打开 Safari 中的 URL

ios - 通过 Ad-Hoc 安装时 iPad 主屏幕图标像素化

ios - 在浏览器中添加网站图标哪种方式更好?

ios - 使用 populateCellWithBlock FirebaseUI 时出错

ios - 如何以编程方式检测用户何时在“今日 View ”中启用小部件

ios - Today Widget 在 IOS 低于 10 的设备上太大了

ios - 我的 scrollView 不想滚动