कॉल में errSecNotAvailable के साथ विफल करने के लिए कीचेन सेवाएं जब लक्ष्य को क्रियान्वित करने कमांड लाइन उपकरण और iphone सिम्युलेटर हार्डवेयर संस्करण 6.0 (10A403) पर सेट है का उपयोग कर errSecNotAvailable के साथ विफल। यदि मैं सिम्युलेटर संस्करण को दूसरे पिछले संस्करण (4.3, 5.0, 5.1) में बदलता हूं और उसी कमांड लाइन स्क्रिप्ट का उपयोग करके फिर से निष्पादित करता हूं तो कॉल सफल होते हैं।कीचेन सेवा API iphonesimulator 6.0
मैं नवीनतम एक्सकोड 4.5 चला रहा हूं और कमांड लाइन उपकरण XCode के भीतर से डाउनलोड किए गए थे।
इस त्रुटि पुन: पेश करने के लिए बस निम्न कार्य करें:
- सेटअप 6.0
- सेट आईओएस तैनाती लक्ष्य को 4.3
- कॉपी करने के लिए और
- सेट बेस एसडीके एक OCUnit लक्ष्य के साथ एक ios पुस्तकालय परियोजना कोड को टेस्ट प्रोजेक्ट में पोस्ट के अंत में पेस्ट करें (यह केवल पासवर्ड स्टोर करने और इसे पुनर्प्राप्त करने का प्रयास करेगा)
- सुरक्षा के लिए OQUnit लक्ष्य पर सुरक्षा जोड़ें
एक्सकोड में ओसीयूनीट लक्ष्य निष्पादित करें और आईफोन सिम्युलेटर में जो भी हार्डवेयर संस्करण सेट है, उसके साथ टेस्ट पास देखें (केवल इसे निष्पादन के बीच बदलें)। iphone सिम्युलेटर हार्डवेयर संस्करण 6.0 के लिए सेट के साथ
xcodebuild -target TARGET_NAME_HERE -sdk iphonesimulator -configuration Release TEST_AFTER_BUILD=YES
और परीक्षण असफल हो जायेगी:
का उपयोग कर कमांड लाइन से OCUnit लक्ष्य निष्पादित। यदि आप आईफोन सिम्युलेटर हार्डवेयर संस्करण को 4.3, 5.0 या 5.1 में बदलते हैं और कमांड लाइन स्क्रिप्ट को फिर से निष्पादित करते हैं तो परीक्षण सफल होगा।
क्या यह एक कमांड लाइन उपकरण समस्या है? एक आईफोन सिम्युलेटर समस्या? एक ओसीयूनीट लक्ष्य कमांड लाइन समस्या से चल रहा है?
कौन से यूनिट परीक्षण पसंद करते हैं जो धूमकेतु गठबंधन होने पर ही पास होते हैं ??
कोई विचार?
यहाँ कोड है:, मैं जाँच कर सकते हैं यह शुरू किया जा रहा है, के बाद शुरू होता है सिम्युलेटर
launchctl list | grep securityd
उपयोग कर, और हो रही
#define KEYCHAIN_ITEM_ATTRIBUTES (id)kSecClassGenericPassword, kSecClass, @"MyService", kSecAttrService, @"MyPassword", kSecAttrAccount
const NSString* MyPassword = @"blabla";
- (void)testExample
{
// remove previous keychain item
OSStatus status = SecItemDelete((CFTypeRef)[NSDictionary dictionaryWithObjectsAndKeys:KEYCHAIN_ITEM_ATTRIBUTES, nil]);
NSLog(@"SecItemDelete status:%ld",status);
NSParameterAssert(status == errSecSuccess || status == errSecItemNotFound);
// add keychain item with new value
NSData *data = [MyPassword dataUsingEncoding:NSUTF8StringEncoding];
status = SecItemAdd((CFTypeRef)[NSDictionary dictionaryWithObjectsAndKeys:KEYCHAIN_ITEM_ATTRIBUTES, data, kSecValueData, nil], NULL);
NSLog(@"SecItemAdd status:%ld",status);
NSParameterAssert(status == errSecSuccess);
// get password
status = SecItemCopyMatching((CFTypeRef)[NSDictionary dictionaryWithObjectsAndKeys:KEYCHAIN_ITEM_ATTRIBUTES,
kSecMatchLimitOne, kSecMatchLimit, kCFBooleanTrue, kSecReturnData, nil], (CFTypeRef *)&data);
NSLog(@"SecItemCopyMatching status:%ld",status);
NSParameterAssert(status == errSecSuccess);
if (status == errSecItemNotFound)
NSLog(@"SecItemCopyMatching status:%ld", status);
else
NSLog(@"SecItemCopyMatching result:%@",[[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]);
}
के बारे में securityd डेमॉन का शुभारंभ किया जा रहा नहीं
- 0 com.apple.iPhoneSimulator:com.apple.securityd
मैंने इस सुरक्षा डीमॉन को रोकने और मैन्युअल रूप से लॉन्च करने का भी प्रयास किया ... मैंने जीटीएम की तरफ देखा RunIPhoneUnitTest.sh एक सरल रेखा मैं इस्तेमाल कर सकते हैं के लिए स्क्रिप्ट, लेकिन जब मैं कोशिश इस
launchctl submit -l ios6securityd -- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/usr/libexec/securityd
मुझे उस डेमॉन पर एक -5 स्थिति कोड देता है।
मैंने खुद को यह समस्या देखी है। क्षमा करें अभी तक कोई विचार नहीं है लेकिन मैं इसे देख रहा हूँ। औसत समय के आसपास के काम के लिए धन्यवाद। –
क्या आपने इसके लिए रडार दायर किया है? मैं तैयार हो रहा हूँ – KevinH
@ केविन एच मैंने एक ऐप्पल बग रिपोर्ट पोस्ट की लेकिन ओपनराडर – trickster