gpt4 book ai didi

delphi - 通过 Delphi XE 在 ios 设备钥匙串(keychain)中存储数据

转载 作者:行者123 更新时间:2023-12-03 18:41:31 25 4
gpt4 key购买 nike

我用谷歌搜索了这个问题,但找不到任何有用的东西,如何通过 Delphi XE6 将数据存储在 ios 设备 KeyChain 中?

最佳答案

你可以这样做:

    aGetQueryDict := TNSMutableDictionary.Create;
try

aKeyStr := StrToNSStr('com.sample.mykey');
aGetQueryDict.setValue((kSecClassGenericPassword as ILocalObject).GetObjectID, kSecClass);
aGetQueryDict.setValue((aKeyStr as ILocalObject).GetObjectID, kSecAttrAccount);
aGetQueryDict.setValue(kCFBooleanTrue, kSecReturnData);
aGetQueryDict.setValue((kSecMatchLimitOne as ILocalObject).GetObjectID, kSecMatchLimit);

aValuePointer := nil;
aStatus := SecItemCopyMatching((aGetQueryDict as ILocalObject).GetObjectID, @aValuePointer);
if (aStatus <> errSecSuccess) then begin

aValueStr := 'MyValue';
aValueBytes := Tencoding.UTF8.GetBytes(aValueStr);
aValueData := TNSData.Wrap(TNSData.alloc.initWithBytesNoCopy(@aValueBytes[0], length(aValueBytes)));
try
aAddQueryDict := TNSMutableDictionary.Create;
try

aAddQueryDict.setValue((kSecClassGenericPassword as ILocalObject).GetObjectID, kSecClass);
aAddQueryDict.setValue((aKeyStr as ILocalObject).GetObjectID, kSecAttrAccount);
aAddQueryDict.setValue((aValueData as ILocalObject).GetObjectID, kSecValueData);

aStatus := SecItemAdd((aAddQueryDict as ILocalObject).GetObjectID, NiL);
if (aStatus <> errSecSuccess) then begin

end;
finally
aAddQueryDict.release;
end;
finally
//aValueData.release; >> i have an exception if i do this !
end;

end
else begin
aValueData := TNSData.Wrap(aValuePointer);
SetLength(aValueBytes, aValueData.length);
aValueData.getBytes(@aValueBytes[0], aValueData.length);
AValueStr := Tencoding.UTF8.GetString(aValueBytes);
end;
finally
aGetQueryDict.release;
end;

关于delphi - 通过 Delphi XE 在 ios 设备钥匙串(keychain)中存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23828515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com