如何为 API 凭据设置/取消设置多个帐户
Posted
技术标签:
【中文标题】如何为 API 凭据设置/取消设置多个帐户【英文标题】:How to set/unset multiple accounts for API credentials 【发布时间】:2015-05-29 03:16:31 【问题描述】:我有一个应用程序可以保存多个用户帐户,以便从我的 API 中检索数据。始终有一个帐户设置为活动或标记为 TRUE。当我选择不同的帐户时,我会停用以前活动的帐户并激活所选帐户或将其设置为 TRUE。我在我的 Accounts 表视图中使用 CoreData 执行这些操作。
当我的应用程序启动时,我的 API 类会检查我的 CoreData 以查看哪个帐户处于活动状态并将其凭据分配给我的 Credential
对象。
然后,我使用这些凭据从我的服务器访问和获取数据。到目前为止,一切都很完美。
我的问题是当我选择一个不同的帐户并在我的 didSelectRowAtIndexPath
方法中重置我的 Credentials
对象时,我的 API 类仍然具有以前活动帐户的凭据。我可以看到/打印 Credentials
对象具有所选帐户的凭据。
如何调整我的对象以仅拥有/使用选定帐户的凭据?
class API
var credentials:Credentials!
init()
self.credentials = getActiveStore()
// I use self.credentials.username to make API calls later in the code
func getActiveStore() -> Credentials?
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName: "User")
fetchRequest.returnsObjectsAsFaults = false
fetchRequest.predicate = NSPredicate(format: "active = %@", 1 as NSNumber)
var error:NSError?
let fetchResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as! [User]
if fetchResults.count == 1
let name = fetchResults[0].name
let url = fetchResults[0].url
let username = fetchResults[0].username
let password = fetchResults[0].password
return Credentials(name: name, url: url, username: username, password: password)
return nil
现在这是一个永远不会改变的类。当我在选择其他帐户后刷新数据时,我看到的数据属于以前活动的帐户。 API 类不想改变。
【问题讨论】:
【参考方案1】:您是否在每次选择新单元格时都创建新凭据?因为您的凭据只是在对象的 criation 中得到更新
init()
self.credentials = getActiveStore()
// I use self.credentials.username to make API calls later in the code
如果您希望更新凭据,则必须创建 API 的新实例。
另一种方法是创建一个更新方法并在选择新单元格时调用它
func updateCredentials()
self.credentials = getActiveStore()
// I use self.credentials.username to make API calls later in the code
【讨论】:
谢谢。有时像这样简单的事情我想不出来。这是我第三次问这个问题,终于有人明白了。 有时我们只需要一双新鲜的眼睛来说出我们错过的事情。我很高兴能帮上忙。祝你的应用顺利完成以上是关于如何为 API 凭据设置/取消设置多个帐户的主要内容,如果未能解决你的问题,请参考以下文章
Angularjs - ng-map - Google Maps Javascript API v3 - 如何为多个标记设置最佳缩放
markdown 如何为两个GitLab帐户设置两个SSH密钥