objective C以编程方式从Keychain中删除帐户

时间:2017-03-07 10:07:40

标签: ios objective-c keychain

我使用SSkeychain类将数据保存到Keychain中,但是当我尝试遍历帐户时,应用程序在列表中的第三项中崩溃,其中acct =< 5f70666f&gt ;;

我正在尝试删除该特定帐户,但我无法将其删除。我尝试删除与应用相关联的所有钥匙串数据,但我仍然面临问题

SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
BOOL isMatchPasscode=FALSE;
NSArray *accounts = [query fetchAll:nil];
for (id account in accounts){
    if([[account 
    valueForKey:@"acct"]isEqualToString:constKeychainAccountTitle ] )
    {
    }
}

LOG FOR ACCOUNTS
acct = "fc_uuidForDevice";
agrp = "99P5TJ23MZ.com.view.Street.dev";
cdat = "2017-03-07 08:53:17 +0000";
mdat = "2017-03-07 09:45:32 +0000";
musr = <>;
pdmn = ck;
svce = "com.view.Str.dev";
sync = 0;
tomb = 0;
},
{
acct = "fc_uuidsOfUserDevices";
agrp = "99P5TJ23MZ.view.Street.dev";
cdat = "2017-03-07 08:53:17 +0000";
mdat = "2017-03-07 09:45:32 +0000";
musr = <>;
pdmn = ck;
svce = "com.view.Street.dev";
sync = 1;
tomb = 0;
},
{
acct = <5f70666f>;
agrp = "99P5TJ23MZ.view.Street.dev";
cdat = "2017-03-07 08:53:20 +0000";
gena = <5f70666f>;
mdat = "2017-03-07 08:53:20 +0000";
musr = <>;
pdmn = dku;
svce = "com.view.Street.dev";
sync = 0;
tomb = 0;
}
)

1 个答案:

答案 0 :(得分:2)

  

- [__ NSCFData isEqualToString:]:无法识别的选择器发送到实例0x1740abcb0

     

我试图将nsdata与字符串进行比较,这就是崩溃的原因。

尝试这样的事情:

id acctObject = [account valueForKey:@"acct"];
NSString *acctString = ([acctObject isKindOfClass:[NSString class]]) ? (NSString *)acctObject : ([acctObject isKindOfClass:[NSData class]]) ? [[NSString alloc] initWithData:acctObject encoding:NSUTF8StringEncoding] : nil;

if (acctString && [acctString isEqualToString:constKeychainAccountTitle]) {
    // stuff
}