问题标签 [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.
ios - 使用 NSUserDefaults 保存和读取 PDFDocument
我有一个 PDFDocument
我想保存在 userdefaults
在这个函数中
现在我想阅读表中的用户默认值
并添加了userdefault 而不是 files[indexPath.row]我是否更正了 nsuserdefault 中的保存以及如何阅读这部分中的 userdefault,这意味着我想阅读一个 PDF 文档
swift - 我的全局数组的 UserDefault 代码有什么问题?
试图通过 UserDefault 存储一个数组,但 Xcode 给了我一个错误。错误消息是线程 1:信号 SIGABRT,控制台显示“NSInvalidArgumentException,原因:尝试插入非属性列表对象”。我以前使用以下代码将数据存储在数组中:
这很好用。这是使用 UserDefault 存储的代码,它给了我错误:
这是一个全局数组,我想存储整个数组。我想这与我在 UserDefault 中编写数组的方式有关,因为对我来说,我似乎正在尝试存储不存在的东西。或者我错过了什么?
swift - 如何检查 userDefault 是否为空?
如果 userDefault 为空,我试图拒绝访问某个视图控制器,但代码似乎不起作用。更清楚一点,我将收藏列表保存到 userDefault。这是我的代码:
错误是索引超出范围,这意味着整个块被忽略(此块之后的代码运行并且由于用户默认为空,因此在尝试检索不存在的信息时崩溃)。
有趣的是,代码在我第一次尝试进入 viewController 时有效(它拒绝我访问)。但是如果我收藏标记一个对象(保存到userDefault),然后取消收藏同一个对象(userDefault变为空),并进入viewController,程序崩溃。
我努力了:
...同样的问题仍然存在。在 print() 中,在我最喜欢的标记之后,日志告诉我 FAV EXISTS,然后是不喜欢的标记,然后尝试访问该页面(即使 userDefault 现在应该为空)。
我也尝试过其他线程的代码。从另一个线程解决我的问题的建议代码是:
我不确定如何实现它?我在哪里使用这个?它有什么作用?
知道有什么问题吗?
ios - iOS KVO - 检测何时再次设置相同的值
是否可以以一种不仅检测值是否更改,而且检测相同值是否再次设置的方式使用 KVO?我目前仅在值更改时才收到通知(与先前设置的不同)。每次设置值时我都需要接收通知(即使它与之前设置的值相同)。我怎样才能做到这一点?
我的代码:
swift - 如何将 Button 的 .setTitle 参数放在 UserDefaults 和 viewDidLoad 中
也许你们中的一些人知道如何将clearButton.setTitle
参数放入UserDefaults
并在之后放入覆盖func viewDidLoad() {
这是我试图在viewDidLoad
准备密钥之前放置的参数,但我认为 defaults.set
是不正确的
谢谢你的帮助 BR Ula
ios - 将 segued 数据存储在单独的视图控制器上(swift4)
我的代码从文本字段中获取文本并转到单独的视图控制器。问题是它只能存储 1 个 segue 条目。每次按下按钮时,新的都会替换旧的。如何在 vc2 上将每个新条目存储到 segue。
风险投资
两个VC
swift - 从两个单独的 SKScene 中检索并立即更新高分
在我的 GameScene 中,我有一个在游戏结束时通过 UserDefaults 保存的分数。下面是我保存分数的 GameScene 代码。
一旦玩家失去所有生命,游戏就会将您带回主菜单场景。在这个场景中,如果玩家最后的分数高于他们之前的高分,我想立即检索并更新主菜单场景中的高分数字。但由于某种原因,它只是不断更新用户在游戏结束时获得的每个分数,无论它是高于还是低于上一个高分。我究竟做错了什么?下面是我的主菜单场景。当我打印“newScore”和“getScore”时,我确实看到了正确的值,但是当涉及到在需要时更新高分时,我的代码肯定是错误的。
swift - 引用类型/子类化,以及对 Swift 4 Codable 和编码器/解码器的更改
当我尝试在 Swift 4 中使用 Codable 升级和减少代码时,我正在努力理解类/引用类型的行为以及这与更改的关系。
我有两个类——一个包含所有持久数据的超类,我保存到 UserDefaults(带有坐标的地名和字符串),以及一个包含我不需要的额外临时信息(天气数据)的子类对于超类坐标)。
在 Swift 3 中,我曾经这样保存数据:
SuperClass 符合 NSObject & NSCoding 它还包括所需的初始化解码器和编码功能。一切都很好。
在尝试切换到 Swift 4 和 codable 时,我修改了 SuperClass 以符合 Codable。SuperClass 现在只有一个基本的初始化程序,并且没有来自 Swift 3 的编码器/解码器的东西。这种新方法不会发生 KeyedArchiving(如下)。子类保持不变。不幸的是,我在尝试的线路上崩溃了?encoder.encode [给线程 1:EXC_BAD_ACCESS (code=1, address=0x10)]。我的假设是编码器与相同的引用类型混淆,其中一个是 SuperClass 和一个 SubClass(subClassArray[0] === superClassArray[0] 是真的)。我认为这可能有效:
然后,不是创建一个空的 superClassArray,而是使用:superClassArray = subClassArray,如上所示,我将其替换为单行:
这行得通。同样,假设是因为我传入了类引用类型中的值,并且没有创建 superClassArray = subClassArray。此外,正如预期的那样, subClassArray[0] === superClassArray[0] 为假
那么为什么 Swift 3 中的“旧东西”可以工作,即使我在 let superClassData = NSKeyedArchiver.archivedData(withRootObject: superClassArray) 之前使用了 superClassArray = subClassArray 行?通过在 Swift 4 中创建与旧的 Swift 3 编码器/解码器相同的数组,我是否基本上实现了相同的结果?是循环/娱乐
谢谢!