gpt4 book ai didi

ios - iOS 键盘扩展和包含应用程序之间的 NSUserDefaults 发布更改?

转载 作者:行者123 更新时间:2023-11-30 13:43:52 24 4
gpt4 key购买 nike

我想我已经尝试了所有方法并阅读了该论坛中所有可能的文章。但似乎没有任何作用。这是一些代码片段和一些设置:

在扩展端:

let thisDefaults = NSUserDefaults(suiteName: "group.request.com")
thisDefaults?.setObject("Hello", forKey: "prevWord")
thisDefaults?.setObject("World", forKey: "word")
let success = thisDefaults?.Synchronize()

NSNotificationCenter.defaultCenter().postNotificationName("ExtensionRequestChanges", object: nil)

在包含应用程序端:

NSNotificationCenter.defaultCenter().addObserver(self, selector:                Selector("DidReceiveRequest:", name: "ExtensionRequestChanges", 
object: nil)

func DidReceiveRequest(notification: NSNotification) {
// Read defaults
let thisDefaults = NSUserDefaults(suiteName: "group.request.com")
let word = thisDefaults?.stringForKey("word")
let prevWord = thisDefaults?.stringForKey("prevWord")
...
}

在项目设置上:

. registered "group.request.com" app group to both the extension and containing app
. set "RequestOpenAccess" in NSExtensionAttributes to YES

但是我的 DidReceiveRequest 函数似乎从未被调用!为什么???

请帮忙。

最佳答案

NSNotificationCenter 仅在其运行的进程中工作。您的键盘扩展和容器应用程序是单独的进程。要发布进程间通知,您应该研究 CFNotificationCenterGetDarwinNotifyCenterAPI 调用,该调用返回一个 Core Foundation 通知中心,可以在进程之间或其他形式的进程间通信之间发布通知。

关于ios - iOS 键盘扩展和包含应用程序之间的 NSUserDefaults 发布更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35216277/

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