gpt4 book ai didi

Swift 3/iOS 10/TodayExtension - UserDefaults 总是返回 nil

转载 作者:搜寻专家 更新时间:2023-10-31 22:44:53 24 4
gpt4 key购买 nike

这是我在这个网站上的第一个问题。我有一个无法解决的问题。

我正在开发一个带有 today 扩展的简单笔记应用程序。我在 Swift 2.2 和 iOS 9 中没有问题。问题只出现在 iOS 10 上的 Swift 2.3 和 Swift 3 中。我遇到的问题如下:

用户可以写笔记(保存在 UserDefaults 中)并打开通知中心并在 TodayExtension 中查看他的笔记。

我有这些方法可以在 UserDefaults 中保存注释并从 UserDefaults 中检索它(我正在使用组,所以在我的应用程序和扩展的功能中,一切都设置好了 - 此外,我的对象当然需要 NSCoding 方法):

open class NoteManager: NSObject {

private static let kKEY: String! = "Notes"
private static let kSUITENAME: String! = "Team.group.bundleIdentifier"

open static func saveNotes(_ notes: [Note]) {
let notesData = NSKeyedArchiver.archivedData(withRootObject: notes)

let defaults = UserDefaults(suiteName: kSUITENAME)!
defaults.set(notesData, forKey: kKEY)
defaults.synchronize()
}

open static func retrieveNotes() -> [Note] {
let notesFromDefault = UserDefaults(suiteName: kSUITENAME)!.object(forKey: kKEY)
var returnedNotes: [Note]! = [Note]()

if notesFromDefault != nil {
if let notesData: Data? = notesFromDefault as! Data! {
NSKeyedUnarchiver.setClass(Note.self, forClassName: "Application_Name.Note")
NSKeyedUnarchiver.setClass(Preference.self, forClassName: "Application_Name.Preferences")
let unarchivedNotes = NSKeyedUnarchiver.unarchiveObject(with: notesData!) as? [Note]

if let notes: [Note] = unarchivedNotes! as [Note]! {
returnedNotes = notes
}
}
}

return returnedNotes
}
}

在 iOS 应用程序中我没有问题。 UserDefaults 适用于此代码。但是当我打开 TodayExtension 时,以下行(在 retrieveNotes() 中)总是返回 nil:

let notesFromDefault = UserDefaults(suiteName: kSUITENAME)!.object(forKey: kKEY)

所以我的 TodayExtension 总是说我没有笔记。您知道为什么会出现此问题吗?

感谢您的帮助! :)

最佳答案

我部分解决了我的问题。

我已经完全删除 Xcode 和所有设置(缓存文件等...),然后我删除了套件名称中的“团队”部分。

现在我在 Xcode 控制台中收到警告,但我可以在我的 TodayExtension 中检索我的笔记。加油!

我仍然有 WatchKit 扩展的问题。我不确定,但我想我已经读过即使有应用程序组的 UserDefaults 也不会与 Apple Watch Extensions 共享。

但 Apple 在他们的文档中写道“此外,iOS 会自动将您的 iOS 应用程序首选项的只读副本转发到 Apple Watch。您的 WatchKit 扩展可以使用 NSUserDefaults 对象读取这些首选项,但它不能直接更改默认值数据库。”

所以我不知道为什么我无法从我的 Apple Watch 检索我的笔记。

至少我已经解决了我的第一个问题。如果有人有相同的。

关于Swift 3/iOS 10/TodayExtension - UserDefaults 总是返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39808319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com