【发布时间】:2016-01-20 17:08:54
【问题描述】:
我已向我的 iphone 目标和 Apple Watch 目标添加了一个组:
在我的 AppDelegate 中有以下代码:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
let userDefaults = NSUserDefaults(suiteName: "group.tripicons")
userDefaults!.setObject("English", forKey: "languageOfCurrentCountry")
userDefaults!.setObject("English", forKey: "languageOfDevice")
userDefaults!.synchronize()
return true
}
但是,当它在我的方法中说它是 nil 时:
class LanguageManager: NSObject {
...
let userDefaults = NSUserDefaults(suiteName: "group.tripicons")
func watchTranslation(word: String) -> String {
print(userDefaults?.dictionaryRepresentation())
// BREAKS HERE
let language = userDefaults?.objectForKey("languageOfCurrentCountry") as! String // <---- BREAKS HERE
...
}
}
print 语句打印一个没有我要查找的密钥的对象:
Optional(["MSVLoggingMasterSwitchEnabledKey": 0, "AppleKeyboardsExpanded": 1, "AppleLanguages": (
en
), "AppleLanguagesDidMigrate": 2.1, "NSInterfaceStyle": macintosh, "NSLanguages": (
en
), "AppleKeyboards": (
"en_US@hw=US;sw=QWERTY",
"emoji@sw=Emoji",
"en_US@hw=US;sw=QWERTY"
)])
即使我在打开 Apple Watch 应用程序之前打开 iphone 应用程序也是如此。我错过了什么吗?
== 更新 ==
from AppDelegate:
["languageOfCurrentCountry": English, "AppleKeyboards": (
"en_US@hw=US;sw=QWERTY",
"emoji@sw=Emoji",
"en_US@hw=US;sw=QWERTY"
), "AppleKeyboardsExpanded": 1, "AddingEmojiKeybordHandled": 1, "AppleLanguages": (
"en-US"
), "ApplePasscodeKeyboards": (
"en_US@hw=US;sw=QWERTY",
"emoji@sw=Emoji",
"en_US@hw=US;sw=QWERTY"
), "AppleLocale": en_US, "NSInterfaceStyle": macintosh, "MSVLoggingMasterSwitchEnabledKey": 0, "NSLanguages": (
"en-US",
en
), "AppleITunesStoreItemKinds": (
audiobook,
"tv-episode",
booklet,
software,
"software-update",
"itunes-u",
ringtone,
"tv-season",
movie,
mix,
wemix,
song,
tone,
artist,
"podcast-episode",
podcast,
eBook,
document,
album,
"music-video"
), "AppleLanguagesDidMigrate": 9.2, "languageOfDevice": English]
【问题讨论】:
-
您是否尝试过从 Apple Watch 和 iPhone 中删除应用程序?我相信我必须这样做才能让事情顺利进行,尽管这可能是巧合。
-
现在让我一秒钟试试
-
不幸的是还是坏了
-
所以确认一下。您将包含应用程序的目标添加到应用程序组以及将手表套件扩展添加到同一组。它们匹配相同,并且都是
on?您是否尝试在设置后立即打印默认值(在应用程序委托中)? -
是的,我有 3 个应用程序组:iphone 应用程序、手表应用程序和手表扩展程序(不知道什么是诚实的)。我只是注意到一些奇怪的事情。当我只在模拟器中运行应用程序时,
AppDelegate中的打印语句会运行,但是,当我在模拟器中运行手表时,AppDelegate中的打印语句不会打印。手表模拟器也不构建iphone应用吗?
标签: ios nsuserdefaults watchkit