Swift 难以注册iOS应用程序的默认值
我一直在为我的iOS应用程序开发一个设置包,并添加了一些切换开关来设置单位。出于某种原因,我在启动时注册默认值的方式不起作用。在我的appDelegate的didFinishLaunching方法中,我添加了:Swift 难以注册iOS应用程序的默认值,swift,settings.bundle,Swift,Settings.bundle,我一直在为我的iOS应用程序开发一个设置包,并添加了一些切换开关来设置单位。出于某种原因,我在启动时注册默认值的方式不起作用。在我的appDelegate的didFinishLaunching方法中,我添加了: let defaultDict = ["altitudeMeters" : 3.28084] NSUserDefaults.standardUserDefaults().registerDefaults(defaultDict) NSUserDefaults.standardUse
let defaultDict = ["altitudeMeters" : 3.28084]
NSUserDefaults.standardUserDefaults().registerDefaults(defaultDict)
NSUserDefaults.standardUserDefaults().synchronize()
当我启动应用程序并获取id为“altitudeMeters”的切换开关的值时,它返回“0.0”。如果我更改开关的位置,它将返回在设置包中输入的值。注册此开关的默认值时是否缺少某些内容
开关设置如下:
我一直在尝试使用以下方法访问该值:
let altitudeFactor = NSUserDefaults.standardUserDefaults().doubleForKey("altitudeMeters")
在其他地方设置默认值后,最初使用先前发布的代码。当您存储字典时,它将其存储为[NSObject:AnyObject]?,因此您需要按照以下步骤执行: 让myDefaultDict=[“高度表”:3.28084]
func saveMyDictionary(){
NSUserDefaults.standardUserDefaults().setObject(myDefaultDict, forKey: "myDefaultDict")
}
func loadAltitude() -> Double? {
if let loadedDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey("myDefaultDict") {
if let altitudeStored = loadedDictionary["altitudeMeters"] as? Double {
return altitudeStored
}
}
return nil
}
saveMyDictionary()
let altitudeFactor = loadAltitude() // it will return an optional
println(altitudeFactor!) // you can force unwrap it if you are sure it wont be nil
// otherwise you can you if let
if let altitudeFactor = altitudeFactor {
println(altitudeFactor) // inside the brackets it is not an optional
}
如果需要删除/重置其值:
NSUserDefaults.standardUserDefaults().removeObjectForKey("myDefaultDict")
您也可以将其另存为Double,而不是像这样的字典:
func saveAltitudeMeters(high:Double){
NSUserDefaults.standardUserDefaults().setDouble(high, forKey: "altitudeMeters")
}
func loadAltitudeMeters() -> Double? {
return NSUserDefaults.standardUserDefaults().doubleForKey("altitudeMeters")
}
saveAltitudeMeters(3.7)
if let loadedAltitudeMeters = loadAltitudeMeters() {
println(loadedAltitudeMeters) // 3.7
}
我尝试添加您建议的内容,但在启动应用程序后,如果我使用
让altitudeFactor=NSUserDefaults.standardUserDefaults().doubleForKey(“altitudeMeters”)
调用该设置的值,我仍然得到0.0
您没有按照我理解的方式执行我告诉您的操作,您提供的代码仍然是初始化默认值的AppDelegate代码。那么,在以这种方式进行设置之后,我如何访问视图控制器中开关的值?您认为您可以为我指出正确的方向,以便访问我的设置吗?我有点困惑。很抱歉,我不得不问另一个愚蠢的问题,但现在我已经在我的AppDelegate中设置了你的函数,我最终需要在我自己的视图控制器中访问这个值。我认为我不能真正创建AppDelegate的实例来调用loadAltitude()方法。我是不是误解了什么?