ios - *已解决* 在分发模式下无法从 NSUserDefault 获取值
问题描述
最近,我在 NSUserDefaults 和 App 扩展方面遇到了一个非常奇怪的问题。我正在使用 NSUserDefaults 来存储一些值(例如:valueA)。通过 safari 打开我的应用程序时,我需要获取 valueA。当我将我的应用程序直接部署到设备时效果很好,当我通过 safari 打开我的应用程序时,我可以获得 valueA。但是当我存档我的应用程序并基于它导出到 iPA 文件或将我的应用程序推送到 TestFlight 时,当我通过 safari 打开我的应用程序时,我无法再获得 valueA 了。
我猜应用扩展的应用组在分发时改变了,但我不知道分发时的应用组是什么?所以我不确定。
在我更新我的应用程序的配置后,我最近才面临这个问题。有没有人遇到过这个问题?任何想法都会赢得我的尊重。
下面是我使用 NSUserDefaults 获取和设置值的代码
#define GROUPID @"group.****"
...
bool NVDataManagerNative::putString(const std::string& key, const std::string& value)
{
NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:GROUPID];
if(ud == nil){
ud = [NSUserDefaults standardUserDefaults];
}
[ud setObject:convertNSString(value) forKey:convertNSString(key)];
[ud synchronize];
return true;
}
...
std::string NVDataManagerNative::getString(const std::string& key, const std::string& def)
{
NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:GROUPID];
if(ud == nil){
ud = [NSUserDefaults standardUserDefaults];
}
NSString *ret = [ud stringForKey:convertNSString(key)];
if (nil == ret) {
return def;
}
return [ret UTF8String];
}
解决方案
推荐阅读
- google-bigquery - How to manipulate a query for 'Average Session Duration' to 'Average Session Duration by DAU' using Google Analytics in BigQuery?
- reactjs - 我对 React 中的 onChange 事件有疑问
- google-chrome-extension - Chrome extension transparent background and rounded corners (like Save To Pocket)
- python - How overwrite Django Admin readonly FileFields HREF url
- java - How to use variable obtained from a parse method in onCreate
- javascript - Add external libraries in Angular 8
- algorithm - What Data structure/Algorithm should I use - interview question
- azure-devops - 用于 Azure DevOps 的带有 azure-pipelines.yml 的 SpecFlow 示例
- python - 通过将 OAuth 2.0 与 Azure Active Directory 和 API 管理结合使用来保护 API
- android - 如何有效地在android应用程序中实现短按和长按(或长按)?