Я использую RealmSwift, чтобы создать экран PIN-кода для приложения. У меня есть класс менеджера, который имеет несколько функций, включая checkForExistingPin (), который предназначен для проверки наличия пин-кода (как следует из названия).
Когда я создаю экземпляр класса manager и вызываю функцию checkForExistingPin (), он всегда сообщает мне, что их 4 (выводит «Optional (4)»), хотя я еще не создал пин-код.
Может кто-нибудь объяснить, почему это происходит, и как я могу получить правильный вывод из кода?
Вот класс:
import Foundation
import RealmSwift
class pinCode: Object {
@objc dynamic var pin = ""
}
protocol pinCodeManager {
func checkForExistingPin() -> Bool
func enterNewPin(newPin:String)
func checkPin(pin:String) -> Bool
}
class manager:pinCodeManager {
let realm = try! Realm()
func checkForExistingPin() -> Bool {
let existingCode = realm.objects(pinCode.self).first?.pin
print("\n\nNumber of existing PINs: ", existingCode?.count as Any, "\n\n") // Number of existing PINs: Optional(4)
if existingCode?.count == 0 {
return false
}
else {
return true
}
}
func enterNewPin(newPin:String) {
if checkForExistingPin() {
let oldCode = realm.objects(pinCode.self).first
try! realm.write {
oldCode!.pin = newPin
}
}
let newPinObject = pinCode()
newPinObject.pin = newPin
realm.add(newPinObject)
}
func checkPin(pin:String) -> Bool {
if checkForExistingPin() {
print ("Realm object first: ", realm.objects(pinCode.self).first?.pin as Any)
if pin == realm.objects(pinCode.self).first?.pin {
print ("Pin Correct")
return true
}
else {
print ("Pin Incorrect")
return false
}
}
print ("No existing pin")
return false
}
}
А вот соответствующий фрагмент кода ViewController:
class InitialViewController: UIViewController {
let myPin = pinCode()
let myManager = manager()
let realm = try! Realm()
@IBAction func NewUserButton(_ sender: Any) {
print("No existing PINs: ", self.myManager.checkForExistingPin())
}
Вывод: Количество существующих PIN: Необязательно (4)