【问题标题】:String Assignment to variable is still nil对变量的字符串赋值仍然为零
【发布时间】:2023-03-18 05:43:01
【问题描述】:

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

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

无法刷新。错误是[错误 域=com.amazonaws.AWSCognitoCredentialsProviderErrorDomain 代码=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,我切换了一些语句,但这不应该影响任何事情。另外,我处理了我的更改,发现问题仍然存在。如果您有任何想法,请告诉我。

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

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

任何想法都会很有帮助

【问题讨论】:

  • 请证明你在jsonDict字典中

标签: ios amazon-web-services nsstring


【解决方案1】:

原来我有一个 login 方法和一个 getToken 方法。在 getToken 方法中,出于安全原因,我没有根据我对代码所做的一些更改来使用钥匙串而不是 nsuserdefaults 做正确的事情。修复 getToken 后,它起作用了。但是经过进一步调试后,我发现无论它是否工作,identityId 仍然没有设置。我猜它可能是某种块变量 s.t.分配不会立即发生。至少这是我的理论。总而言之,它虽然有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2013-03-21
    • 1970-01-01
    • 2023-03-13
    • 2015-01-21
    • 1970-01-01
    • 2021-06-23
    相关资源
    最近更新 更多