Ios UserDefault始终返回nil

Ios UserDefault始终返回nil,ios,iphone,swift3,watchkit,userdefaults,Ios,Iphone,Swift3,Watchkit,Userdefaults,UserDefaults在我的应用程序中不起作用。请在AppDelegate文件下找到以下代码 let sharingData = UserDefaults.init(suiteName: "group.macuser79.xxx"); sharingData?.set("vincenzo", forKey:"username"); sharingData?.synchronize(); 在要观看的应用程序的InterfaceController中,为了能够检索值,我这样做: override

UserDefaults
在我的应用程序中不起作用。请在
AppDelegate
文件下找到以下代码

let sharingData = UserDefaults.init(suiteName: "group.macuser79.xxx");
sharingData?.set("vincenzo", forKey:"username");
sharingData?.synchronize();
在要观看的应用程序的InterfaceController中,为了能够检索值,我这样做:

override func awake(withContext context: Any?) {
let sharingData = UserDefaults.init(suiteName: "group.macuser79.xxx");

let username = sharingData?.object(forKey: "username");
    print("Value username \(username)");
}

请让我知道,我做错了什么

Swift3
UserDefaults
中,对获取的存储值进行智能化处理。在下一行中,您正在存储
字符串
值,但未指定它!:

sharingData?.set("vincenzo", forKey:"username");
因此,为了达到这个目的,你需要像下面这样写:

let username = sharingData?.string(forKey: "username");
    print("Value username \(username)");
}
在基于您的存储获取值时,这是一个更好的上下文。

请尝试以下方法:

let defaults = UserDefaults.standard 
defaults.set("group.macuser79.xxx", forKey:"username")
defaults.synchronize()
要访问存储,请执行以下操作:

let defaults = UserDefaults.standard
let username = defaults.string(forKey: "username")
我承认我以前没有尝试过
init()
我自己的
UserDefaults
实例,但是iOS将它的标准实例制作成一个单例,这是一个很好的实践

另外,不要忘了正确打开可选包装。

要设置:

UserDefaults(suiteName: "group.macuser79.xxx")?.set("vincenzo", forKey: "username")
要访问:

UserDefaults(suiteName: "group.macuser79.xxx")!.string(forKey: "username")

替代解决方案:使用GenericKeychain。首先要看的是使
group.macuser79.xxx
group在项目的两个目标的“能力”选项卡中定义。@Otávio。您好,我检查了该组是否在目标和已定义中都已定义。都在iPhone的目标中定义,都在目标手表中定义,都在手表扩展中定义,一切似乎都正常。我还更新了配置文件,但不幸的是什么都没有。嗯,这段代码是我用Objective-C编写的代码的直接端口,所以我无法发现任何错误。
sharingData
object在这两种情况下都不是零吗?让我们来看看。您好,谢谢您的回答,但不幸的是它不起作用。正如我所指出的,我已经更正了我的代码,但不幸的是,该值始终为零。我也在iPhone模拟器上启动了该应用程序,但不幸的是,它不起作用。您好,我在互联网上做了一些研究,在这个链接中,用户遇到了与我同样的问题。这应该是苹果手表模拟器的问题。现在,我如何解决问题,以便我可以尝试测试我的应用程序?我只剩下一个,然后我就可以发表了。谢谢,文琴佐希,我试过按照你的指示做,但不幸的是,道歉总是无效的!阅读本文了解更多信息:您好,我在互联网上做了一些研究,在这个链接中,用户遇到了与我同样的问题。这应该是苹果手表模拟器的问题。现在,我如何解决问题,以便我可以尝试测试我的应用程序?我只剩下一个,然后我就可以发表了。谢谢你,文琴佐海洛,我试着按照我的指示去做,但不幸的是,它不起作用。在这一点上,我认为模拟器有问题,因为我不知道还有什么好考虑的。我会试着给朋友买一块苹果手表,看看这是否是问题所在。感谢您的光临。VincenzoHello,我在互联网上做了一些研究,在这个链接中,用户遇到了与我同样的问题。这应该是苹果手表模拟器的问题。现在,我如何解决问题,以便我可以尝试测试我的应用程序?我只剩下一个,然后我就可以发表了。谢谢,VincenzoHello,我在互联网上做了一些研究,在这个链接中,用户遇到了与我同样的问题。这应该是苹果手表模拟器的问题。现在,我如何解决问题,以便我可以尝试测试我的应用程序?我只剩下一个,然后我就可以发表了。谢谢,文琴佐