【问题标题】:SecItemCopyMatching OSStatusSecItemCopyMatching OSStatus
【发布时间】:2014-08-25 15:53:26
【问题描述】:

我在使用 SecItemCopyMatching 时返回 -34018。我没有找到任何文档这个错误代码的含义。也许有人可以帮助我。提前致谢。

【问题讨论】:

  • "客户端既没有应用程序标识符也没有钥匙串访问组权利"
  • 有趣的谢谢。我注意到当我的应用程序在后台被杀死时会发生这种情况(例如,大量内存消耗)。当我再次启动应用程序时,我收到此错误。你知道如何解决这个问题吗?

标签: ios objective-c keychain


【解决方案1】:

许多(全部?)安全框架错误代码在SecBase.h 中定义,该头文件是安全框架的一部分。你也可以在Apple's open-source Security framework找到这个文件。

错误代码-34018是这样定义的:

errSecMissingEntitlement                 = -34018,    /* A required entitlement isn't present. */

【讨论】:

    【解决方案2】:

    试试这个

     NSString *NSStringFromOSStatus(OSStatus errCode)
        {
            if (errCode == noErr)
                return @"noErr";
            char message[5] = {0};
            *(UInt32*) message = CFSwapInt32HostToBig(errCode);
            return [NSString stringWithCString:message encoding:NSASCIIStringEncoding];
        }
    

    【讨论】:

    • 它仍然不如我的答案好,它提供了完整的纹理信息,但由于使用了不推荐使用的方法,因此无法包含在产品中。
    • 我使用该代码并在 ios7 sdk 中构建项目时不推荐使用的方法是什么?它没有显示任何不推荐使用的方法?你能指定这些方法吗?
    • 我在谈论我在链接问题中的答案 - 它使用了已弃用的 Carbon 方法,并且只能在 OSX 下运行。但是,它确实会产生正确的消息,其中作为该链接中接受的答案以及您的答案,在某些情况下只会产生无意义的 4 字符字符串,而在其他情况下则根本没有用处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 2013-10-17
    • 2023-03-29
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多