Перенос пользовательских настроек по умолчанию в файлы .swift - PullRequest
0 голосов
/ 25 мая 2018

Я хочу установить пользовательские настройки по умолчанию в файле утилиты приложения и вызывать их в любом желаемом контроллере представления.Вот виджет сегодня:

import UIKit
import NotificationCenter

class TodayViewController: UIViewController, NCWidgetProviding {

@IBOutlet weak var BitCount: UILabel!
@IBOutlet weak var upCost: UILabel!

var Bits:Double = defualts.double(forKey: "bits")
var bitsPerClick:Double = defualts.double(forKey: "bitsPerClick")
var upgradePrice:Double =  defualts.double(forKey: "upgradeCost")

//Click bit
@IBAction func Click(_ sender: Any) {
    AppUtility().bitClick()
    BitCount.text = "\(Bits)"
}

//Click Upgrade
@IBAction func Upgrade(_ sender: Any) {
    AppUtility().upgradeClick()
        upCost.text = "Cost \(upgradePrice)"
        BitCount.text = "\(Bits)"
}

Вот утилита приложения:

import Foundation
import UIKit

let defualts = UserDefaults.standard

var Bits:Double = defualts.double(forKey: "bits")
var bitsPerClick:Double = defualts.double(forKey: "bitsPerClick")
var upgradePrice:Double =  defualts.double(forKey: "upgradeCost")

class AppUtility: UIViewController {

public func setDefualts() {
defualts.set(0, forKey: "bits")

defualts.set(1, forKey: "bitsPerClick")

defualts.set(10, forKey: "upgradeCost")
}

public func upgradeClick() {

    if Bits >= upgradePrice {
        Bits = Bits - upgradePrice
        bitsPerClick = bitsPerClick + 1
        upgradePrice = upgradePrice * 1.5
    }
}
public func bitClick() {
    Bits = Bits + bitsPerClick
}
}

Когда я запускаю код, все мои метки отображаются пустыми, поэтому я предполагаю, что пользовательские значения по умолчаниюлибо не установлен, либо не вызывается должным образом

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вы сохраняете свои значения как целые числа, но читаете их как двойные числа.

Измените

 defualts.set(1, forKey: "bitsPerClick")

на

 defualts.set(1.0, forKey: "bitsPerClick")

или прочитайте ихкак целые числа

var bitsPerClick:Int = defualts.integer(forKey: "bitsPerClick")
0 голосов
/ 25 мая 2018

Попробуйте это

/// Global Struct
struct globalValues {
    static var firstValue : String?
    static var secondValue : String?
}

/// Set Value
globalValues.firstValue = "1"
globalValues.secondValue = "2"

/// Get Values
print(globalValues.firstValue ?? "")
print(globalValues.secondValue ?? "")

/// When App is closed Struct will be cleared
/// Save Data for reference in UserDefaults
/// Now in App Delegate which is called for
/// first time Just Assign
/// Userdefaults values to Struct
/// So you can use it -- like
globalValues.firstValue = UserDefaults.standard.value(forKey: "firstValue") as? String
globalValues.secondValue = UserDefaults.standard.value(forKey: "secondValue") as? String

Итак, вам не нужно передавать что-либо из одного класса в другой, что сэкономит ваше время и некоторый объем кода (время компиляции)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...