Я хочу быстро получить идентификатор устройства на всех уровнях классов, который будет включаться в качестве параметра каждый раз при выполнении асинхронного вызова. И я действительно не понимаю Apple Access Control. Так что мне действительно нужна помощь

Итак, как сделать сохранение идентификатора устройства в начальной точке и его доступность для всех классов для асинхронного запроса?

В приложении didFinishLaunchingWithOptions я добавлю следующий код, скажем, связка ключей - это библиотека, в которой я храню значение

if keychain.get("deviceID") == nil{
     keychain.set(UIDevice.currentDevice().identifierForVendor!.UUIDString,forKey : ”deviceID”)
     //some private var deviceID = keychain.get(“deviceID”)
}
else{
    some private var deviceID = keychain.get(“deviceID”)
}

И я хочу получить доступ к этой частной переменной везде в классе UIViewController.

class ViewController : UIViewController {
     let deviceID = //some private var with getter?
}

Есть ли идеи, что я могу сделать быстро? С помощью Apple Access Control?

И эта проблема связана с этим вопросом: Получение идентификатора устройства не уникальный

-1
Thiha Aung 20 Фев 2016 в 09:37

2 ответа

Лучший ответ

Определите свой deviceID как статический, и вы сможете получить к нему доступ везде

После вашего кода для запуска связки ключей установите его как статический в некотором классе

class DeviceArg {
 static var deviceId = keychain.get(“deviceID”)
}


// some other place in the code
let check = DeviceArg.deviceId //get deviceId
1
Roee84 20 Фев 2016 в 11:35

Проверить мой код: -

var mytoken1: String = deviceToken.description.stringByReplacingOccurrencesOfString("<", withString: "")
var mytoken2: String = mytoken1.stringByReplacingOccurrencesOfString(">", withString: "")
mytoken2 = mytoken2.stringByReplacingOccurrencesOfString(" ", withString: "")
NSUserDefaults.standardUserDefaults().setValue(mytoken2, forKey: "DEVICE_TOKEN")
NSUserDefaults.standardUserDefaults().synchronize()
-1
Sabby 20 Фев 2016 в 11:45