编辑:问题已解决。为社区做出贡献,我设置了一些帮助方法,并举例说明如何在我的博客上使用它们。在此处找到KeyChain MT example
- 原始问题:
在模拟器和iPad上运行iOS4.2。
我正在尝试使用以下代码存储和读取钥匙串中的密码。我对代码的启发是https://github.com/ldandersen/scifihifi-iphone/,但我无法让它工作。我错过了什么?
// Create a record.
SecRecord o = new SecRecord ( SecKind.GenericPassword );
o.Service = "myService";
o.Label = "myService";
o.Account = "test@test.com";
// The super secret password.
o.Generic = NSData.FromString ( "secret!", NSStringEncoding.UTF8 );
// Add to keychain.
SecKeyChain.Add ( o );
// Now cerate another recored to query what we just saved.
o = new SecRecord ( SecKind.GenericPassword );
o.Service = "myService";
o.Account = "test@test.com";
// Query as record.
SecStatusCode code;
var data = SecKeyChain.QueryAsRecord ( o, out code );
// This will tell us "all good!"...
Console.WriteLine ( code );
// But data.Generic is NULL and this line will crash. :-(
Console.WriteLine ( NSString.FromData ( data.Generic, NSStringEncoding.UTF8 ) );
答案 0 :(得分:5)
而不是使用SecRecord
的{{1}}试试这个:
.ValueData
Console.WriteLine(NSString.FromData(data.Generic, NSStringEncoding.ASCIIStringEncoding));
从存储Generic
的位置返回NSData。