我正在尝试将 TodayExtension 添加到我现有的应用程序中,并且我希望该应用程序和扩展程序将通过 NSUserDefaults 共享数据。根据本教程http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/ 我确实喜欢它说:
- 使用 Today 扩展创建新目标
- 在 Extension 和 App 中添加新的 App-Group
- 将代码添加到应用程序
- 将代码添加到扩展程序
应用程序代码
func updateExtensionData() {
let key = "identityCode"
let valueForStore:Float = 2.0
let extensiontDefaults = NSUserDefaults(suiteName: "group.company.mineSharedDefaults")
extensiontDefaults?.setFloat(valueForStore, forKey: key)
let results = extensiontDefaults?.synchronize()
let checkCode = extensiontDefaults?.objectForKey(key)
print("code for save \(valueForStore) synchronize result \(results) readed code \(checkCode!)")
}
扩展代码
private func updateData() {
let key = "identityCode"
let extensionDefaults = NSUserDefaults(suiteName: "group.company.mineSharedDefaults")
let checkCode = extensionDefaults?.floatForKey(key)
print("synchronize result \(resut) readed code \(checkCode!)")
}
问题
我的问题是扩展名总是读取 0 而不是 2。显然我遗漏了一些东西。在 AppGroup 和 NSUserDefaults 的情况下,iOS8 和 9 之间有一些主要区别吗?我知道应用程序之间只有watchOS2。
为了更清楚,这是来自 App 和 Extension NSUserDefaults 的键
应用程序密钥
苹果键盘
苹果键盘扩展
添加表情符号键盘处理
苹果语言
苹果密码键盘
首选语言
苹果语言环境
NSInterfaceStyle
MSVLoggingMasterSwitchEnabledKey
NS语言
AppleiTunesStoreItemKinds
身份代码
AppleLanguagesDidMigrate
PKEnable斯德哥尔摩设置
扩展键
苹果键盘
苹果键盘扩展
添加表情符号键盘处理
苹果语言
苹果密码键盘
首选语言
苹果语言环境
NSInterfaceStyle
MSVLoggingMasterSwitchEnabledKey
NS语言
AppleiTunesStoreItemKinds
AppleLanguagesDidMigrate
PKEnable斯德哥尔摩设置
很明显,密钥identityCode
根本没有出现在扩展中。