如何为 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 凭据设置/取消设置多个帐户的主要内容,如果未能解决你的问题,请参考以下文章

如何为专业帐户创建 PayPal App Id 实时凭据

Angularjs - ng-map - Google Maps Javascript API v3 - 如何为多个标记设置最佳缩放

markdown 如何为两个GitLab帐户设置两个SSH密钥

如何为不接受取消令牌的异步函数设置超时?

如何设置凭据以从 GCE VM 命令行使用 Gmail API?

如何为 github 存储库设置 CIAbot