当前位置: 首页 > 面试题库 >

无法使用另一个应用程序组访问NSUserDefaults

马承
2023-03-14
问题内容

我正在开发一个应用程序和一个小部件,该小部件需要从应用程序获取数据。我使用以下代码在NSUserDefaults上进行读写。而且我还使用$(PRODUCT_BUNDLE_IDENTIFIER).widget了小部件并$(PRODUCT_BUNDLE_IDENTIFIER)引用了这篇文章。但是小部件无法从应用程序或NSUserDefaults获取数据。我该如何运作?

func addTask(name: String?) {
    let key = "keyString"
    tasks.append(name!)
    let defaults = NSUserDefaults(suiteName: "group.Mins")
    defaults?.setObject(tasks, forKey: key)
    defaults?.synchronize()

}

///////

let defaults = NSUserDefaults(suiteName: "group.Mins")
let key = "keyString"

if let testArray : AnyObject = defaults?.objectForKey(key) {
    let readArray : [String] = testArray as! [String]
    timeTable = readArray
    timeTable = timeTable.sort(<)
    print("GOT IT")
    print("timetable: \(timeTable)")
}

问题答案:

要从同一组NSUserDefaults中读取和保存,需要执行以下操作:

  1. 在您的主应用程序中,在项目导航器中选择您的项目。
  2. 选择您的主要应用目标,然后选择功能选项卡。
  3. 打开应用程序组(这将与开发人员门户进行通信,因为它会生成一组权利以及相关的应用程序ID等)。
  4. 创建一个新的容器。根据帮助,它必须以“ group。”开头,因此命名为“ group.myapp.test”。
  5. 选择您的Today Extension目标,然后重复此打开应用程序组的过程。不要创建一个新的组,而是选择这个新创建的组以表示Today Extension是该组的成员。

写入您的NSUserDefaults:

// In this example I´m setting FirstLaunch value to true 
NSUserDefaults(suiteName: "group.myapp.test")!.setBool(true, forKey: "FirstLaunch")

从NSUserDefaults读取:

// Getting the value from FirstLaunch
let firstLaunch = NSUserDefaults(suiteName: "group.myapp.test")!.boolForKey("FirstLaunch")

if !firstLaunch  {
   ...
}

Swift 4.x:

写:

UserDefaults(suiteName: "group.myapp.test")!.set(true, forKey: "FirstLaunch")

读:

UserDefaults(suiteName: "group.myapp.test")!.bool(forKey: "FirstLaunch")


 类似资料:
  • 问题内容: 是否可以在J2EE应用程序(EAR)中配置两个单独的Web应用程序(WAR)来访问共享会话上下文? 更多信息: 我最终从EAR创建了一个共享类,该类将所需的信息存储在静态成员中。即使看起来很脏,这也能解决问题。 问题答案: 不直接。大多数容器将每个WAR放置在以EAR类加载器作为其父级的单独的类加载器中。每个应用程序的会话都是独立的。您可以在每个会话中放入父EAR提供的内容。如果您需要

  • 我试图从我的SAM应用程序本地连接到DynamoDB。我能够启动Dynamodb服务器,并能够通过我的python文件连接它,引用此https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.01.html 导入json导入boto3从boto3.dynamodb.conditions

  • 问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序

  • 我正在使用SeleniumJavaJAR版本:3.4.0Appium,桌面版本:1.4.13.1Java客户端版本:5.0.0-BETA9 代码和所需的功能是: } 但当我运行它时,在eclipse控制台中出现了以下错误: 以下是appium的错误: 试图通过更改不同版本来解决,但无法解决。appium正在显示错误,但同时emulator正在显示已安装的应用程序。 有人有相同的问题吗?请提出解决方

  • 我使用docker compose在docker容器中运行SpringBoot应用程序,在另一个docker集装箱中运行另一个VueJS应用程序。yml如下: 我试图调用SpringBoot REST API从我的VueJS应用程序使用超文本传输协议://backend: 8080/hello和它失败GET超文本传输协议://backend: 8080/hello net::ERR_NAME_NO

  • 我的脚本搜索特定目录中的所有pdf文件,然后从pdf中提取一个id,并在文件中组织pdf。例如我有: 我想这样组织它们: 下面的脚本做的工作,但我认为只有最后一个文件输出以下错误: 回溯(最近一次调用):文件“C:\Users\user\Downloads\aa\project.py”,第74行,在操作系统中。rename(source,dest)PermissionError:[WinError