String对变量的赋值仍为零

时间:2016-02-15 21:29:25

标签: ios amazon-web-services nsstring

所以我使用AWS Cognito从我的iOS应用程序验证我的用户。然而,在一小段代码中,我做了一些微小的改变,缩小了一个非常奇怪的问题。

我注意到我收到了这个错误:

  

无法刷新。错误是[错误   Domain = com.amazonaws.AWSCognitoCredentialsProviderErrorDomain Code = 1   “identityId不应该是零”   UserInfo = {NSLocalizedDescription = identityId不应该是nil}]

调试后,我注意到identityId实际上没有设置:

_identityId = [jsonDict objectForKey:@"IdentityId"];
self.keychain[EncryptionKeyKey] = self.identityId;
return [AWSTask taskWithResult:nil];

虽然我在上面的代码块中清楚地设置了它,并检查以确保[jsonDict objectForKey:@“IdentityId”]确实产生了一些值,但我通过调试器找到了一个“po self.identityId”之前和之后任务仍然是零。 NSString不是需要分配的东西,而且更常见的是它曾经工作过。由于我目前使用UICkeychainstore,我改变了一些陈述,但这不会影响任何事情。此外,我处理了我的更改并发现问题仍然存在。如果您有任何想法,请告诉我。

我在上一次错误后不久也注意到了这个错误:

  

此应用程序正在从后台线程修改autolayout引擎,这可能导致引擎损坏和奇怪的崩溃。这将在将来的版本中引发异常。

任何想法都会非常有用

1 个答案:

答案 0 :(得分:0)

原来我有登录方法和getToken方法。在getToken方法中,基于我为了安全原因而使用keychain而不是nsuserdefaults对代码所做的一些更改,我没有做正确的事情。修复getToken后,它工作正常。经过进一步调试后,我看到identityId仍然无法设置,无论它是否正常工作。我猜它可能是某种块变量s.t.任务不会立即发生。至少这是我的理论。总而言之,它有效。