Могу ли я сериализовать объект ACAccount, содержащий авторизованную учетную запись Twitter?

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

Если я получаю только один ACAccount, используя -[ACAccountStore accountsWithAccountType:], это легко... Я просто использую его. Однако, если их несколько ACAccounts, я не хочу спрашивать их каждый раз, когда захожу в приложение, какое из них использовать.

Как я это вижу до сих пор, мои варианты:

  1. Сериализировать объект ACAccount с помощью NSKeyedArchiver (это было бы идеально, если это возможно)

  2. Ошибка пользователя каждый раз (не хочу этого делать)

  3. Сохраните только имя пользователя выбранного ACAccount, затем в следующем сеансе сравните имя пользователя в каждой учетной записи в пределах ACAccountStore и выберите эту учетную запись (хотя по какой-то причине это кажется неэлегантным обходным путем).

Спасибо заранее!


person Karl White    schedule 16.02.2013    source источник
comment
вариант (3) кажется самым безопасным вариантом. Сериализация объекта ACAccount целиком немного похожа на излишество. Единственный раз, когда вы спросите после этого, это хотят ли они измениться или изменилось ли имя их учетной записи в Твиттере.   -  person Petesh    schedule 17.02.2013
comment
Спасибо Петеш! Да, я пошел с № 3, и, похоже, он работает довольно надежно. Мне просто не нравилась идея полагаться исключительно на имя пользователя, но это работает, так что, думаю, я счастлив.   -  person Karl White    schedule 17.02.2013


Ответы (1)


ACAccount имеет свойство с именем identifier для уникальной идентификации одной учетной записи. Тип этого свойства — NSString, поэтому вы можете легко сохранить его значение с помощью NSUserDefaults или NSCoding (или любого другого используемого вами решения для сохранения). Если вы хотите получить учетную запись, которая принадлежит этому идентификатору, вы просто используете метод -[ACAccountStore accountWithIdentifier:] и передайте идентификатор в качестве параметра.

person mbinna    schedule 15.04.2013