NSUserDefaults 没有在 Jenkins 的模拟器中保存内存
Posted
技术标签:
【中文标题】NSUserDefaults 没有在 Jenkins 的模拟器中保存内存【英文标题】:NSUserDefaults not saving in memory in simulator on Jenkins 【发布时间】:2016-03-08 02:40:08 【问题描述】:我遇到了一种奇怪的情况,即 NSUserDefaults 在真实设备上运行良好,但在我们拥有的特定 Mac 的模拟器上却不行。
registerDefaults 工作正常:
NSUserDefaults.standardUserDefaults().registerDefaults(["Default1": 3, "Default2: false])
如果我运行NSUserDefaults.standardUserDefaults().dictionaryRepresentation()
,这些默认值会包含在字典中。
但是,setObject
不起作用
NSUserDefaults.standardUserDefaults().setObject("abc", for Key: "ABC")
NSUserDefaults.standardUserDefaults().synchronize()
NSUserDefaults.standardUserDefaults().objectForKey("ABC")
在模拟器上总是返回 nil。
Mac 的这个问题是将 El Capitan 作为 Jenkins CI 服务器(作为启动代理)运行,我尝试在不同版本的模拟器(9.2、8.4...等)上运行该应用程序没有任何运气所以远的。有什么想法吗?
【问题讨论】:
setValue
方法怎么样,行得通吗?
@Wongzigii setValue
也不行。
密钥区分大小写。
您是否尝试过删除并重新安装 Xcode 以及该 Mac 上 Library 文件夹中的所有 Xcode 相关文件?
@DaveBatton 是的,尝试完全删除 xcode 并重新安装,仍然无法正常工作。
【参考方案1】:
我们自己也遇到过类似的情况,在我们完全重新安装操作系统 (El Capitan
) 之前,我们决定尝试创建一个新用户 Jenkins2
作为正确的真实用户,即位于/Users/Jenkins2
,而不是位于/Users/Shared/Jenkins
的*nux 风格安装。在解决了权限更改和移动文件带来的许多问题之后,这为我们解决了问题。
版本:OSX El Capitan
、Jenkins v. 1.652
和 XCode 7.2.1
。
如果您束手无策,我建议您尝试获得一个在 Jenkins 下绝对无法运行的简单重现项目,然后在 XCode 中验证它在 Jenkins 之外也无法运行,但是当以 Jenkins 用户身份登录。如果是这样,您很可能遇到与我们相同的问题。以默认的 Mac 方式创建一个新用户,然后在那里尝试相同的项目。如果这对您来说是一个令人满意的解决方案,请将所有 Jenkins 设置移至该新用户,并删除旧用户。这就是我们最终所做的,从那以后我们就再也没有遇到过问题。
【讨论】:
以上是关于NSUserDefaults 没有在 Jenkins 的模拟器中保存内存的主要内容,如果未能解决你的问题,请参考以下文章
NSUserDefaults 没有在 Jenkins 的模拟器中保存内存
UIImage 没有从 NSUserDefaults 中检索