问题标签 [userdefaults]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
47141 浏览

ios - 在 iOS 8 共享扩展程序和主应用程序之间共享数据

最近,我一直在做一个简单的 iOS 8 分享扩展来了解系统是如何工作的。正如 Apple 在其App Extension Programming Guide中所述:

默认情况下,您的包含应用程序及其扩展无法直接访问彼此的容器。

这意味着扩展程序和包含的应用程序不共享数据。但在同一页面中,Apple 带来了一个解决方案:

如果您希望包含应用程序及其扩展能够共享数据,请使用 Xcode 或开发人员门户为应用程序及其扩展启用应用程序组。接下来,在门户中注册应用程序组并指定要在包含应用程序中使用的应用程序组。

然后可以使用 NSUserDefaults 在包含的应用程序和扩展程序之间共享数据。这正是我想做的。但由于某种原因,它不起作用。

在同一页面中,Apple 建议使用标准默认值:

在 WWDC 演示文稿 (217) 中,他们提出了一个通用包:

此外,我为包含应用程序目标和扩展目标启用了应用程序组,具有相同的应用程序组名称: XCode 目标功能、应用程序组

但所有这些设置都是徒劳的。我无法从扩展中检索存储在包含应用程序中的数据。就像两个目标使用完全不同的 NSUserDefaults 存储一样。

所以,

  1. 这种方法有解决方案吗?
  2. 如何在包含应用程序和共享扩展程序之间共享简单数据?数据只是 API 的用户凭据。
0 投票
14 回答
186831 浏览

ios - 如何在 Swift 中使用 UserDefaults?

如何使用 UserDefaults 在 Swift 中保存/检索字符串、布尔值和其他数据?

0 投票
1 回答
759 浏览

ios - 存储 UITextView 字符串/文本数据

所以我正在尝试创建一个显示可编辑的大文本视图的视图。在情节提要中,它被编辑为显示文本“在此处记笔记(向下滑动以关闭键盘):”作为占位符。

我希望它记住用户何时编辑除此之外的文本......所以我使用 != 做了一个 if 语句,该比较器适用于快速比较字符串。我不确定它是否会得到应用商店评论的批准,因为他们推荐 isEqualToString()。

无论如何,下面的代码是针对该视图的...如果用户从占位符更改了输入的文本,则它不会记住输入的文本。它认识到它已被更改,但是当您返回视图时,它再次显示默认占位符...帮助?

尝试实现以下答案时出现一些编译错误。

在 viewWillAppear 函数中,编译器说“不能调用非函数类型'UserDefaults'的值” - 编译器突出显示if let newText带有UserDefaults.standardUserDefaults()红色下划线的行。

在 viewWillDisappear 函数中发现了相同的编译错误:

0 投票
5 回答
1265 浏览

swift - 从 UserDefaults 中读取缺失值

我想将字体大小存储在用户默认值中并在下次运行时读取它。但是在第一次运行时,当我使用下面的代码检查字体大小时,它返回 0,而我期待一个异常或类似的东西,它说这个值之前没有保存:

现在font_size是 0 应该是 nil 或者抛出异常!

Apple 文档说: 与指定键关联的浮点值。如果键不存在,则此方法返回 0。

但是我不喜欢0但是我想知道这个值之前是否存储过!

0 投票
2 回答
1656 浏览

swift - Swift 3 / iOS 10 / TodayExtension - UserDefaults 总是返回 nil

这是我在这个网站上的第一个问题。我有一个无法解决的问题。

我正在开发一个带有今天扩展的简单笔记应用程序。我在 Swift 2.2 和 iOS 9 中没有问题。问题只出现在 iOS 10 上的 Swift 2.3 和 Swift 3 中。我遇到的问题如下:

用户可以写一个笔记(保存在 UserDefaults 中)并打开通知中心并在 TodayExtension 中观看他的笔记。

我有这些方法可以在 UserDefaults 中保存注释并从 UserDefaults 中检索它(我正在使用组,所以在我的应用程序和扩展的功能中,一切都设置得很好 - 此外,我的对象当然需要 NSCoding 方法):

在 iOS 应用程序中我没有问题。UserDefaults 与此代码配合得很好。但是当我打开 TodayExtension 时,以下行(在 retrieveNotes() 中)总是返回 nil :

所以我的 TodayExtension 总是说我没有笔记。你有什么想法为什么会发生这个问题?

谢谢您的帮助 !:)

0 投票
2 回答
450 浏览

ios - 使用用户默认值保存数据

我在我的应用程序中制作了一项功能,可让您将音乐静音,我在此处放置了一个开关,以便您可以在打开和关闭之间进行切换。但是,该开关在应用程序中工作正常,当我关闭 vie 控制器并将其拉回时,它仍会显示它是如何离开的,但是当您关闭应用程序并重新打开它时,开关看起来好像它关闭了但它仍然播放音乐。这是我的代码,我会附上一张图片。

这是图片 在此处输入图像描述 如果你不明白我上面所说的,请提问。

0 投票
2 回答
120 浏览

swift - Swift - 即使在检查对象是否存在后仍然打印“可选” - 我如何解开

对 Swift 来说非常新,所以这里是一个非常简单的问题,但我正在努力从UserDefaults存储值中解开一个可选项。UID 的值为“dan”。这是代码:

这会更改按钮 updateUsername 标签,并且还会在控制台打印以下内容...

加载时可选(“丹”)

我无法摆脱 Optional()。我试图解开uid。

print("加载时 (uid!)")

正如 Xcode 告诉我的那样,我不能强制解开非可选类型“Any”的值。

通过四处搜索,我了解到检查 -if let uid = uidObject1删除了 Optional() 因为它仅在uidObject1存在时运行。有人可以指出我正确的方向吗?

编辑:这是我的设置代码;

回答 - 需要像这样解开集合 (userName.text) > (userName.text!) 已解决。谢谢奥利弗。

0 投票
1 回答
1896 浏览

swift - UserDefaults() 和 UserDefaults.standard 之间的区别

Swift 3.0UserDefaults()和in有区别吗?UserDefaults.standard

0 投票
1 回答
994 浏览

ios - userdefaults not being saved after first time

I created some simple system that if userdefaults have key "isWalkthroughPresented". If the key is false then show walkthourghViewController. If it doesn't have the key then check from database.

However it doesn't set the key after first time. But saves after some launches. What should be the problem?

This is the code I use inside viewDidAppear after user has signed in and sees second ViewController:

0 投票
2 回答
788 浏览

ios - Swift3:删除包含 UserDefault 值的单元格时,TableView 中的错误

我遵循了此处提供的所有步骤:The proper way to delete rows from UITableView and update array from NSUserDefaults in Swift / iOS

但是,会导致错误,说;

'无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (2) 必须等于更新前该节中包含的行数 (2),加上或减去从该部分插入或删除的行数(0 插入,1 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。

我创造了

类 TableViewController: UITableViewController {

}

words从另一个控制器,通过这种方式将值添加到Section的数组中;

问题是什么?从我的看法来看,如果我没有明确地写tableView.reloadData()ortableView.beginUpdates()和,我可以理解endUpdates(),但我确实做到了。导致此错误的原因是什么?你可以帮帮我吗?

谢谢。

更新

另外,我发现如果我这样写,它会起作用。但是,选定的一个没有从我的表格视图中删除。单词的第一个索引已从我的表格视图中删除,无论我选择并删除了一个部分中的一行。删除的行在另一个部分中。