标签: nsuserdefaults

在同步完成之前,iOS NSUserDefaults访问

如果我设置了一个NSUserDefault对象并尝试在同步之前访问它,我是否可以访问刚刚添加的对象?

我已经尝试编写代码来测试它,但我不确定在没有我知道的情况下同步是否正在发生.

objective-c nsuserdefaults synchronize ios

1
推荐指数
1
解决办法
3045
查看次数

Android 中 Objective C 的共享首选项

有没有办法将这段代码重新创建到 Objective c 中?我刚刚开始,我需要一些帮助。

String name = #;// Will often vary.

SharedPreferences userData = this.getSharedPreferences(name + "userdata", MODE_PRIVATE);
    Editor edit = userData.edit();
    edit.clear();
    edit.putFloat("rating", Rating.getRating());
    edit.putString("good", txtGood.getText().toString().trim());
    edit.putString("improve", txtImprove.getText().toString().trim());
    edit.commit();
    Log.d(TAG, "Saving Data");
Run Code Online (Sandbox Code Playgroud)

这段代码的优点是每次调用该方法时都会创建一个新的 SharedPreference。根据我使用 NSUserDefaults 的经验,它只能生成一批数据。

arrays android objective-c nsuserdefaults sharedpreferences

1
推荐指数
1
解决办法
2277
查看次数

使用NSUserDefaults在Swift中保存和加载高分

我在尝试比较我的得分和高分时遇到一些问题,看看哪一个更大然后保存.我认为问题在于比较和保存高分和得分.非常感谢帮助!

//Comparison between score and highscore
if score > highscore {
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
    highscore = defaults.valueForKey("highscore")?.integerValue ?? 0
    defaults.setInteger(score, forKey: "highscore")
    defaults.synchronize()
    highscoreString = String(highscore)
    highscoreLabel.text = highscoreString  }
Run Code Online (Sandbox Code Playgroud)

全页代码 - https://github.com/SRL311/Highscore/blob/master/Highscore (对不起那里令人困惑的大写字母和小写字母)

nsuserdefaults ios swift

1
推荐指数
1
解决办法
1150
查看次数

Swift - 从 userDefaults 保存和检索图像

我正在尝试保存从 Parse.com 检索的图像,如下所示:

                    let userImageFile = object["Image"] as PFFile
                    userImageFile.getDataInBackgroundWithBlock {
                        (imageData: NSData!, error: NSError!) -> Void in
                        if error == nil {
                            image = UIImage(data:imageData)
                            let imageToSave:NSData = UIImagePNGRepresentation(image)
                            self.saveImage(intRandomNumb, retImage: imageToSave)
                        }
                    }
Run Code Online (Sandbox Code Playgroud)

saveImage 函数如下所示:

func saveImage(imagepath:Int, retImage:NSData){

    println("image is being saved")

    let defaults = NSUserDefaults.standardUserDefaults()
    let imagePathName = "\(imagepath)"

    defaults.setObject(retImage, forKey: imagePathName)

}
Run Code Online (Sandbox Code Playgroud)

后来,我试图像这样显示这个图像:

        var point = gestureRecognizer.locationInView(self.tv)
        if let indexPath = self.tv.indexPathForRowAtPoint(point)
        {
            let data = mainList[indexPath.row] as SecondModel
            let fileRef = data.fileReference
            let intFileRef = …
Run Code Online (Sandbox Code Playgroud)

xcode nsuserdefaults uiimageview nsdata swift

1
推荐指数
1
解决办法
7116
查看次数

如何将 plist 注册到 NSUserDefaults?

我想要做的是将我的初始用户默认值存储在 plist 中,然后在应用程序第一次加载时将它们读入 NSUserDefaults。

到目前为止,我找到了几篇对我有帮助的帖子,但是我似乎无法找到有关为什么我在展开时发现 nil 的答案。显然我错过了一些东西,所以我的问题是:

如何将 plist 正确注册到 NSUserDefaults?

我用我的默认设置创建了一个 plist。我想从 plist 中读取并将它们注册到 NSUserDefaults 中。

设置.plist

在此处输入图片说明

视图控制器.swift

class ViewController: UIViewController {

    let userDefaults = NSUserDefaults.standardUserDefaults()

    override func viewDidLoad() {
        super.viewDidLoad()
        let prefs = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist")
        let dict = NSDictionary(contentsOfFile: prefs!)

        if let dictionary = dict {
            println("Contents of file unwrapped: \(dictionary)") // <---------
            let defaults : NSDictionary! = dictionary.valueForKey("Root") as? NSDictionary
            println("defaults: \(defaults)") // <---------
            userDefaults.registerDefaults(defaults as! [NSObject : AnyObject])
            userDefaults.synchronize()
        }

        if let unwrapDict …
Run Code Online (Sandbox Code Playgroud)

plist nsuserdefaults ios swift

1
推荐指数
1
解决办法
2599
查看次数

在NSUserDefaults中使用可选值[String:AnyObject?]存储字典

我需要存储一个可以包含nil作为值的字典

var someOptionalVar: String? = nil

var dict: [String: AnyObject?] = [
    "someOptionalVar": self.someOptionalVar
]

defaults.setObject(dict, forKey: self.nsUserDefaultsKey)
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误

无法将'[String:AnyObject?]'类型的值转换为预期的参数类型'AnyObject?'

我知道我可以保留nil变量然后当我从NSUserDefaults解析字典时,我会将变量(对应于缺少的属性)设置为nil,但这不是我想要做的.

那么如何在NSUserDefaults中存储nil值?

nsuserdefaults swift

1
推荐指数
1
解决办法
947
查看次数

是否可以经常访问NSUserDefaults/UserDefaults?

我有一个登录视图控制器,用户可以在其中输入他们的首选项,例如他是否要激活某些UI功能.

我将这些存储为getter和setter直接访问的变量UserDefaults,以下是其中一个示例:

class Preferences {
        static var likesSpaghetti : Bool {
            set (likesSpaghetti) {
                UserDefaults.standard.set(likesSpaghetti, forKey: "likesSpaghetti")
            }

            get {
                return UserDefaults.standard.bool(forKey: "likesSpaghetti")
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

因此,每当我想要设置其中任何一个时,我只需编写如下内容:

Preferences.likesSpaghetti = false

现在,我的问题是:每次用户轻拂开/关开关时我都可以设置这些变量,还是应该将首选项保持为局部变量,然后才设置:

Preferences.likesSpaghetti = spaghettiSwitch.isOn

当用户离开时loginViewController?每次访问都是UserDefault即时快速的吗?或是它是否滞后,应该仁慈地使用?

关闭这个问题后编辑:所以我学会了不要过早地优化,并且它可能在几十个元素的范围内.所以我应该没事.每次用户修改任何内容时我都会更新,以便我的代码更容易阅读和维护.

感谢大家!

nsuserdefaults ios swift swiftyuserdefaults

1
推荐指数
1
解决办法
412
查看次数

是否仍然可以在 iOS 和 tvOS 之间共享 UserDefaults?

是否仍然可以在 iOS 和 tvOS 之间共享 UserDefaults?

在我的 Xcode 项目中,我用于UserDefaults在 iOS 目标和 tvOS 目标之间共享数据。UserDefaults当我尝试从我的 tvOS 应用程序取回数据时,我总是收到来自我的 nil 值。

这些是我共享数据所采取的步骤:

1:为两个目标添加应用程序组。两个目标使用相同的应用程序组 ID: group.nl.mycompany.myappname

我使用 .nl 域,但这应该没问题,因为这也适用于我的其他项目。

2:确认两个目标具有相同的部署目标。我尝试使用 10.0 和 11.0。

3:验证 myproject.entitlements 是否一切正常。

4:验证在 developer.apple.com 上为我的包标识符启用了应用程序组。

5:两个目标具有相同的包 ID。我还尝试使用 2 个不同的包标识符。

6:我UserDefaults从我的 iOS 应用程序写入的方式:

guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return }
defaults.set("Apple", forKey: "username")
defaults.synchronize()
Run Code Online (Sandbox Code Playgroud)

我通过获取如下值来确认这在我的 iOS 应用程序中有效:

guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return nil }
defaults.synchronize()
let name …
Run Code Online (Sandbox Code Playgroud)

nsuserdefaults ios swift tvos

1
推荐指数
1
解决办法
911
查看次数

使用 UserDefaults 存储点击游戏的分数 (Swift 5)

做了一个简单的增量游戏。我希望这样即使我转到不同的VC然后返回游戏或重新打开游戏,它也会显示当前分数。我的问题是,如果我离开游戏,那么分数将归零。我不希望这种情况发生。分数不应该被重置。我听说我可以使用 UserDefaults,但我根本不熟悉它。如果您可以使用代码进行解释,那将是最好的。谢谢。

import UIKit

class CookieClickerVC: UIViewController {

@IBOutlet weak var goldLabel: UILabel!
@IBOutlet weak var numberOfGold: UILabel!
@IBOutlet weak var getGoldButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    formatItems()
    let defaults = UserDefaults.standard
    defaults.set(0, forKey: "goldCount")

}



@IBAction func getGoldClicked(_ sender: Any) {
    goldCount += 1
    numberOfGold.text = ("\(goldCount)")
}`
Run Code Online (Sandbox Code Playgroud)

此外,您可能已经想通了,但是 goldCount 是一个未解析的标识符。单击按钮后我应该如何更改代码?

xcode nsuserdefaults uikit ios swift

1
推荐指数
2
解决办法
163
查看次数

使用@AppStorage 进行字符串映射

如何@AppStorage在 SwiftUI 应用程序中使用字符串映射?

这就是我想要做的:

@AppStorage("ratings") var ratings: [String: Double] = []
Run Code Online (Sandbox Code Playgroud)

但这给了我错误消息“调用初始化程序时没有完全匹配”。查看文档时,似乎只支持几种数据类型。可以将其编码为Data?

nsuserdefaults swiftui ios14

1
推荐指数
1
解决办法
1445
查看次数