SecItemAdd और SecItemCopyMatching रिटर्न त्रुटि कोड -34018 (इरेटीमिसिंग कार्यपत्रक)


116

कभी-कभी जब मैं Xcode से डिवाइस पर एप्लिकेशन चलाता हूं तो मैं किचेन तक पहुंचने का प्रयास करूंगा लेकिन त्रुटि के कारण विफल हो सकता हूं -34018। यह किसी भी प्रलेखित कीचेन त्रुटि कोड से मेल नहीं खाता है और इसे लगातार पुन: पेश नहीं किया जा सकता है। (शायद समय का 30% होता है, और यह मेरे लिए स्पष्ट नहीं है कि ऐसा क्यों होता है)। इस समस्या को डीबग करना बहुत मुश्किल है जो प्रलेखन की कुल कमी है। किसी भी विचार यह क्या कारण है और इसे ठीक करने के लिए कैसे? मैं Xcode 5 का उपयोग कर रहा हूं और डिवाइस पर iOS 7.0.4 चला रहा हूं।

इस बारे में एक खुला मुद्दा है: https://github.com/soffes/sskeychain/issues/52

संपादित करें: अनुरोध के अनुसार किचेन एक्सेस कोड जोड़ना

मैं SSKeychainचाबी का गुच्छा के साथ इंटरफेस के लिए पुस्तकालय का उपयोग कर रहा हूँ । यहाँ स्निपेट है।

#define SERVICE @"default"

@implementation SSKeychain (EXT)

+ (void)setValue:(NSString *)value forKey:(NSString *)key {
    NSError *error = nil;
    BOOL success = NO;
    if (value) {
        success = [self setPassword:value forService:SERVICE account:key error:&error];
    } else {
        success = [self deletePasswordForService:SERVICE account:key error:&error];
    }
    NSAssert(success, @"Unable to set keychain value %@ for key %@ error %@", value, key, error);
    if (!success) {
        LogError(@"Unable to set value to keychain %@", error);
    }
    LogTrace(@"Will set keychain account %@. is to nil? %d", key, value == nil);
    if (value == nil)
        LogWarn(@"Setting keychain %@ to nil!!!", key);
}

+ (NSString *)valueForKey:(NSString *)key {
    NSError *error = nil;
    NSString *value = [self passwordForService:SERVICE account:key error:&error];
    if (error && error.code != errSecItemNotFound) {
        NSAssert(!error, @"Unable to retrieve keychain value for key %@ error %@", key, error);
        LogError(@"Unable to retrieve keychain value for key %@ error %@", key, error);
    }
    return value;
}

+ (BOOL)removeAllValues {
    LogInfo(@"Completely Reseting Keychain");
    return [[self accountsForService:SERVICE] all:^BOOL(NSDictionary *accountInfo) {
        return [self deletePasswordForService:SERVICE account:accountInfo[@"acct"]];
    }];
}

@end

समय का अधिकांश भाग ठीक है। कभी-कभी मैं जोर से असफलता से टकराता हूँ जहाँ मैं या तो किचेन से लिखने या पढ़ने में असमर्थ होता हूँ, जिससे गंभीर रूप से विफलता हो जाती है।


मैं एक ही समस्या है और इसे पुन: पेश नहीं कर सकता ... मैं Apple से KeychainItemWrapper वर्ग का उपयोग कर रहा हूं। कभी-कभी यह Google Analytics से एक ही त्रुटि संदेश के साथ क्रैश हो जाता है। मैं Google Analytics v3.02 के उपयोग में हूं।
जॉय

इसके अलावा, यह AppStore से ऐप में ठीक है। यह केवल विकास संस्करण ऐप में होता है।
जॉय

2
मेरे पास ऐप स्टोर संस्करण के लिए दुर्घटनाग्रस्त है और दुर्भाग्य से यह ऐप स्टोर में भी होने लगता है, भले ही देव की तुलना में कम लगातार: /
टोनी

3
मैं किचेन से दूर जाने के बारे में सोच रहा हूं क्योंकि तथ्य यह है कि किचेन में संग्रहीत डेटा को बेतरतीब ढंग से खो दिया जा सकता है जैसे कि यह एप्लिकेशन के लिए बहुत अधिक घातक त्रुटि है।
टोनी

2
हम इस आंतरायिक मुद्दे को भी देख रहे हैं। जब हम -34018 मामले सहित secItemCopyMatching से अप्रत्याशित आरसी प्राप्त करते हैं, तो हम एक अपवाद उठाते हैं। हमने (अनिच्छा से) एक तंत्र को जोड़ने की कोशिश की, जहां एक बार हमें चाबी का मूल्य प्राप्त करने की आवश्यकता होती है, हम इसे ऐप मेमोरी में कैश कर देते हैं और फिर इसे किचेन एक्सेस के बिना वहां से सेवा देते हैं। लेकिन अब हम ऐसे दुर्लभ अवसरों को देख रहे हैं, जहां पहली बार इसे प्राप्त करने के लिए एक चाबी का गुच्छा -34018 के साथ विफल हो जाता है। क्या किसी ने -34018 के बाद ऑपरेशन को पुनः प्रयास करने की कोशिश की है?
क्रिस मार्क

जवाबों:


45

iOS 10 / XCode 8 फिक्स:

किचेन एंटाइटेलमेंट जोड़ें, प्रोजेक्ट सेटिंग्स पर जाएं-> क्षमताएं-> कीचेन शेयरिंग-> कीचेन जोड़ें + पर जोड़ें

एक जवाब यहाँ, Apple से:

अद्यतन: हम अंततः iOS 8.3 पर -34018 त्रुटि को पुन: उत्पन्न करने में सक्षम हैं। यह मूल कारण की पहचान करने और फिर एक फिक्स के साथ आने का पहला कदम है।

हमेशा की तरह, हम रिलीज़ टाइमफ़्रेम के लिए प्रतिबद्ध नहीं हो सकते हैं, लेकिन इससे कई डेवलपर्स प्रभावित हुए हैं और हम वास्तव में इसे हल करना चाहते हैं।

पहले मैंने आवेदन में एक छोटी सी देरी को जोड़ने का सुझाव दिया था: didFinishLaunchingWithOptions and applicationDidBecomeActive: किचेन को वर्कअराउंड के रूप में एक्सेस करने से पहले। हालाँकि, यह वास्तव में मदद करने के लिए प्रकट नहीं होता है। इसका मतलब है कि इस समय ऐप को रिलॉन्च करने के अलावा अन्य कोई ज्ञात समाधान नहीं है।

समस्या स्मृति दबाव से संबंधित प्रतीत होती है, इसलिए शायद स्मृति चेतावनी को संभालने में अधिक आक्रामक होना समस्या को कम कर सकता है

https://forums.developer.apple.com/thread/4743#14441

अपडेट करें

ठीक है, यहाँ नवीनतम है।
यह कई संभावित कारणों के साथ एक जटिल समस्या है:

  • समस्या के कुछ उदाहरण गलत ऐप साइनिंग के कारण होते हैं। आप इस मामले को आसानी से पहचान सकते हैं क्योंकि समस्या 100% प्रतिलिपि प्रस्तुत करने योग्य है।
  • समस्या का कुछ उदाहरण बग के कारण होता है जिसमें iOS ऐप डेवलपमेंट का समर्थन करता है (r। 23,991,853)। यह डीबगिंग इस तथ्य से जटिल थी कि ओएस (आर। 23,770,418) में एक और बग ने इसके प्रभाव को मुखौटा कर दिया, जिसका अर्थ है कि समस्या केवल तब हुई जब डिवाइस स्मृति दबाव में थी। हमारा मानना ​​है कि इन समस्याओं को iOS 9.3 में हल किया गया था।
  • हमें संदेह है कि इस समस्या के और भी कारण हो सकते हैं।

इसलिए, यदि आप इस समस्या को एक उपयोगकर्ता डिवाइस पर देखते हैं (जो कि Xcode द्वारा बात नहीं की गई है) जो iOS 9.3 या उसके बाद चल रही है, तो कृपया इसके बारे में एक बग रिपोर्ट दर्ज करें। अपनी बग रिपोर्ट में डिवाइस सिस्टम लॉग को शामिल करने का प्रयास करें (मुझे एहसास है कि ग्राहक उपकरणों के साथ काम करते समय मुश्किल हो सकता है; एक विकल्प ग्राहक को ऐप्पल कॉन्फ़िगरेशन को स्थापित करने के लिए कहने के लिए है, जो उन्हें सिस्टम लॉग को देखने की अनुमति देता है)। और अगर आप बग दर्ज करते हैं, तो कृपया अपना बग नंबर दर्ज करें, केवल रिकॉर्ड के लिए।

Apple की ओर से मैं इस भयानक मुद्दे पर नज़र रखने में मदद करने में उनके प्रयासों के लिए सभी को धन्यवाद देना चाहता हूं। साझा करें और आनंद लें

https://forums.developer.apple.com/thread/4743#126088


2
समस्या अभी भी iOS 9.2, iPhone 5S पर पुन: पेश होती है।
देवगंता

1
IOS 9.3 जैसा लगता है कि आपके द्वारा लिंक किए गए थ्रेड में Apple की नवीनतम प्रतिक्रिया के अनुसार इस मुद्दे को हल करना चाहिए । क्या आप इस नई जानकारी के साथ अपना जवाब अपडेट कर सकते हैं?
जेएफ

1
@YoonLee इसे iOS10 के साथ भी देख रहा है - AWS के 2.4.8 SDK का उपयोग करके। AWSClientContext.m लाइन 54 में त्रुटि आई। कोई भी भाग्य इसे हल कर रहा है?
चार्ल्स

1
@YoonLee btw, बस नीचे दिए गए उत्तरों में से एक का उपयोग करके इसे हल किया गया: 'कीचेन शेयरिंग लक्ष्य क्षमताओं के लिए चालू'
चार्ल्स

1
@CharlesA हां, मैंने उस दिन हल किया था। तुम सही हो। लगता है 'कीचिन एंटाइटेलमेंट टर्न ऑन' समस्या को ठीक करता है। हैरानी की बात है, यह त्रुटि हमेशा ट्रिगर नहीं होती है। वैसे भी, अब मैं इसे चालू कर रहा हूं।
यूं ली

25

मूल रूप से आपको अपने परीक्षण लक्ष्य में रन स्क्रिप्ट के रूप में निम्नलिखित जोड़कर अपने .xcttest फ़ोल्डर को कोड करना होगा।

codesign --verify --force --sign "$CODE_SIGN_IDENTITY" "$CODESIGNING_FOLDER_PATH"

डिवाइस पर मेरे किचेन का परीक्षण करने पर मुझे बहुत -34018 त्रुटियाँ मिलीं और इसे ठीक करने में वह सफल रहा।

यदि समस्या आपके परीक्षण लक्ष्य में मौजूद नहीं है तो यह संभवतः समाधान नहीं है।


यह पुष्टि की यह परीक्षण वातावरण में तय की। मुझे वास्तविक परीक्षण लक्ष्य पर रन स्क्रिप्ट को जोड़ना था (जैसे कि w / सभी यूनिट परीक्षण, डिवाइस पर चलने वाला निर्माण लक्ष्य नहीं)। यह भी पुष्टि की कि यह केवल डिवाइस पर एक मुद्दा था, सिम्युलेटर पर नहीं।
Iwasrobbed

2
जब मैं ऐसा करता हूं तो मुझे "कोई भी पहचान नहीं मिली है" कमांड / बिन / श नहीं मिला। मुझे लगता है कि मेरे पास $ CODE_SIGN_IDENTITY नहीं है। किसी भी विचार मैं इसे कैसे ठीक करूं?
डैनियल कॉफमैन

1
@DanielCoffman, आपको अपनी लक्ष्य सेटिंग में जाना चाहिए और कोड साइनिंग आइडेंटिटी में "iOS डेवलपर" (या किसी अन्य मान्य पहचान) का चयन करना चाहिए। यह बिल्ड त्रुटि को ठीक करता है, हालांकि कम से कम मेरे लिए यह किचेन समस्या को ठीक नहीं करता है। मुझे अभी भी -34018 त्रुटि कोड मिलता है।
मार्सिन

3
धन्यवाद मार्सिन। जब मैंने xcode 6 बीटा पर स्विच किया तो मुझे यह त्रुटि मिलने लगी। इस सूत्र में कोई सुझाव हल नहीं हुआ। 5 और -34018 xcode पर लौटा अब नहीं होता है।
डैनियल कॉफमैन

मुझे भी पहली बार XCode 6.3 का उपयोग करने के बाद से इस त्रुटि का अनुभव है।
व्लादिमीर स्लावीक

13

स्रोत कोड का निरीक्षण करने के बाद । मैंने देखा है कि किचेन सुविधाओं को एक सुरक्षा डेमॉन के माध्यम से एक्सेस किया जाता है जो अपनी प्रक्रिया (ऐप प्रक्रिया से अलग) में चलती है।

आपका एप्लिकेशन और सुरक्षा प्रक्रिया XPC नामक तकनीक के माध्यम से एक साथ 'बात' करते हैं ।

यदि आवश्यक हो, तो सुरक्षा को XPC द्वारा प्रसिद्ध लॉन्चड कमांड के माध्यम से लॉन्च किया जाता है। आप संभवतः यह देख सकते हैं कि डेमन एक्टिविटी मॉनीटर ऐप (यदि सिम्युलेटर में चल रहा है) में चल रहा है और इसकी मूल प्रक्रिया लॉन्च की गई है।

यहां मेरा अनुमान है कि यह संभव है कि किसी भी अज्ञात कारण से सुरक्षा डेमॉन शुरू करने में विफल हो या इसे बहुत धीरे से करें और जब आप इसका उपयोग करने का प्रयास करें तो तैयार नहीं है।

शायद आप सोच सकते हैं कि डेमॉन को कैसे लॉन्च किया जाए।

मैं अधिक सटीक नहीं होने के लिए माफी चाहता हूं। मुझे आशा है कि यह आपकी जांच में आगे बढ़ने में मदद कर सकता है।


2
मुझे यह समस्या केवल तब होती है जब मेरा ऐप डीप लिंक के माध्यम से निम्नलिखित ऐप प्रतिनिधि विधि के साथ फिर से खोला जाता है: - (BOOL) एप्लिकेशन: (UIApplication *) एप्लिकेशन हैंडलऑनलाइन: (NSURL *) url। अगर मैं सिर्फ ऐप शुरू करता हूं, तो किचेन लेखन काम करता है, और अगर मैं ऐप को छोटा और अधिकतम करता हूं, तो यह अभी भी काम करता है। यह केवल तभी होता है जब मैं गहरे लिंक के साथ फिर से खुलता हूं जो यह समस्या होती है। मेरे पास मेरी परियोजना में कॉन्फ़िगर की गई MyApp.entitlements है (क्षमताएं टैब में कीचेन साझा करना) Xcode 7 बीटा 4
FranticRock

मेरा मामला एलेक्स के समान है, जो केवल तभी होता है जब ऐप गहरे से जुड़ा हो। नहीं तो ठीक चलता है। हो सकता है कि ऐप के किसी अन्य ऐप से खोले जाने पर कुछ संदर्भ सही न हो।
कोडब्रिज

12

मैं iOS 8 SDK के साथ Xcode 6 बीटा में अपना कोड बनाने और चलाने के बाद समान व्यवहार देख रहा हूं (यह Xcode 5 / iOS के साथ सही तरीके से काम कर रहा है)। Xcode 6 में, iOS सिम्युलेटर SecItemCopyMatching में हमेशा रिटर्न -34018 है। यह क्षमता टैब में "किचेन शेयरिंग" चालू करने के बाद काम करना शुरू कर दिया।

हालाँकि मेरे पास एक और मुद्दा है। मैं स्टैटिक लाइब्रेरी विकसित कर रहा हूं, जिसका उपयोग (दूसरों के बीच) डेमो एप्लिकेशन द्वारा किया जाता है। उपरोक्त समाधान डेमो एप्लिकेशन प्रोजेक्ट के लिए काम करता है, लेकिन जब मैं अपने स्थिर पुस्तकालय प्रोजेक्ट को यूनिट करने की कोशिश करता हूं, तो मेरे पास बिल्कुल वही त्रुटि है। और समस्या यह है कि मेरी स्थिर पुस्तकालय परियोजना में क्षमता टैब नहीं है (क्योंकि यह स्टैंडअलोन एप्लिकेशन नहीं है)।

मैंने JorgeDeCorte द्वारा यहां पोस्ट किए गए समाधान की कोशिश की है, परीक्षण लक्ष्य में कोडिंग के साथ, लेकिन यह मेरे लिए काम नहीं करता है।


8
और वापस iOS 8 बीटा 3 में :)
मुस्तफा

7
और iOS 9.0 में वापस
एलेक्स स्टोन

4
और अब iOS में वापस 9.2 :-(
Vamos

4
IOS 10 बीटा 2 में वापस
प्रांजल बिकास दास

3
और iOS 10 बीटा 5 में वापस
पास्कल

6

एप्लिकेशन लॉन्च करते समय सभी ब्रेकप्वाइंट को अक्षम करने का प्रयास करेंXcode से । आप उन्हें बाद में सक्षम कर सकते हैं।

(उपरोक्त वर्कअराउंड में से कोई भी मेरे लिए काम नहीं किया)


अजीब। मेरे लिए भी इस मुद्दे को ठीक करने लगता है! हर बार जब मैंने सिम्युलेटर पर डिबगिंग शुरू की तो मैं -34018 ओएसएसटेटस का अनुभव कर सकता था।
midori

4

मेरे पास बस 7.1 और 8.0 चल रहे सिम्युलेटर पर एक ही मुद्दा था। कुछ खुदाई करते समय, मैंने देखा कि ऐप्पल के सैंपल ऐप में कीचचिन शेयरिंग था जो अपनी लक्ष्य क्षमताओं के लिए चालू था। मैंने इसे अपने ऐप के लिए चालू किया, जिसके परिणामस्वरूप एक एंटाइटेलमेंट फ़ाइल बनाई गई जिसे मैंने डिफ़ॉल्ट मानों के साथ छोड़ दिया और अब मुझे -34018 त्रुटियां नहीं मिल रही हैं। यह आदर्श नहीं है, लेकिन मैं अभी के लिए किचेन साझा करने के विकल्प को जीऊंगा।


4

एक .xctest बंडल को कोड करना उतना आसान नहीं है जितना कि कुछ मामलों में लगता है। मुख्य रूप से JorgeDeCorte उनके जवाब के साथ सही है कि दी गई छोटी लाइन Run Scriptअधिकांश देवों के लिए पर्याप्त है।

codesign --verify --force --sign "$CODE_SIGN_IDENTITY" "$CODESIGNING_FOLDER_PATH"

लेकिन जब आपके किचेन में कई प्रमाण पत्र होंगे तो यह निम्नलिखित पंक्ति के साथ विफल हो जाएगा

iPhone Developer: ambiguous (matches "iPhone Developer: Your Name (ABC123DEF45)" and "iPhone Developer: Your Name (123ABC456DE)"

कई लोगों के पास भी सही प्रमाण पत्र प्राप्त करने का एक समाधान यह संक्षिप्त लिपि है। यह सुनिश्चित करने के लिए कि यह आदर्श नहीं है, लेकिन मेरे ज्ञान के अनुसार आपके पास प्रमाण पत्र प्राप्त करने का कोई मौका नहीं है जो Xcode को मिला है और आपके .app पर हस्ताक्षर करने के लिए उपयोग करता है।

echo "codesign --verify --force --sign \"$CODE_SIGN_IDENTITY\" \"$CODESIGNING_FOLDER_PATH\""
IDENTITIES=`security find-identity -v -s "Code Signing" | grep "iPhone Developer" | awk '{ print $2 }'`

for SHA in $IDENTITIES; do
    codesign --verify --force --sign $SHA "$CODESIGNING_FOLDER_PATH"
    if [ $? -eq 0 ]; then
        echo "Matching identity found: $SHA"
        exit 0
    fi
done;

exit 1

4

मुझे इससे बहुत तकलीफ हुई, साथ ही मुझे किसी भी अन्य वर्कअराउंड से कोई सफलता नहीं मिली। फिर मैंने उपकरणों पर अपने प्रोविज़निंग प्रोफाइल को अपने ऐप से संबंधित सभी को हटाने के साथ-साथ सभी वाइल्डकार्ड प्रोफाइल (यह बात प्रतीत होती है) को हटा दिया। ऐसा करने के लिए, Xcode में "डिवाइस" विंडो पर जाएं और अपने (कनेक्टेड) ​​फोन पर राइट-क्लिक करें:

"प्रोविजनिंग प्रोफाइल दिखाएं" पर क्लिक करें और संबंधित लोगों और विशेष रूप से टीम प्रोफाइल को हटा दें:

तारांकन के साथ वाले। एप्लिकेशन को पुन: स्थापित करने के बाद, सब कुछ सामान्य हो गया।


इससे मुझे Xcode से ऐप चलाने और विकास प्रक्रिया जारी रखने में मदद मिली।
सलाबाह

AdHoc रिलीज़ का निर्माण करते समय आप देख सकते हैं कि कौन से PP का उपयोग किया जाता है। यदि आपको कोई XC दिखाई देता है: प्रोफाइल, उन को हटा दें और अपने पीपी को रिफ्रेश करें!
कुत्तेगार्ड १od

मैं देख सकता हूं कि यह कैसे एक कारक हो सकता है। वहाँ क्या गड़बड़ है !! कुछ साफ करते हुए
डेविड

3

मैंने इस समस्या को ठीक कर लिया है (मुझे लगता है)। मेरे पास अपने डिवाइस पर एक वाइल्डकार्ड प्रोविज़निंग प्रोफ़ाइल था जो दिखाता था कि इसकी वैध हस्ताक्षर पहचान नहीं है। मेरे पास मेरे ऐप के लिए एक प्रोविजनिंग प्रोफ़ाइल भी थी जो मान्य थी। जब मैंने वाइल्डकार्ड प्रोफ़ाइल को हटा दिया, तो मुझे -34018 त्रुटियां मिलना बंद हो गईं।

मैंने यह भी सुनिश्चित किया कि लक्ष्य की बिल्ड सेटिंग्स के कोड साइनिंग सेक्शन में सूचीबद्ध कोड पर हस्ताक्षर करने वाली पहचान और प्रोविज़निंग प्रोफाइल ऐप के लिए एक समान थी (सामान्य "iPhone डेवलपर" नहीं)


इसी तरह यह मेरे लिए तय है। डिबग के लिए "iPhone डेवलपर" और रिलीज़ के लिए "iPhone वितरण" पर हस्ताक्षर करने वाले प्रोजेक्ट-स्तरीय कोड सेट करें। मैंने फिर मुख्य लक्ष्य पर ओवरराइड्स को हटा दिया ताकि वे समान दिखें। इससे पहले, किचेन में बचत 100% समय विफल हो रही थी। बाद में, किचेन में बचत स्थिर प्रतीत होती है।
jowie

2

मुझे अपने ऐप (iOS 8.4) में बहुत कम ही -34018 त्रुटि मिल रही थी । कुछ जांच के बाद मैंने पाया कि इस मुद्दे को तब होता है जब एप्लिकेशन डेटा keychain से अनुरोध करता है भी अक्सर
उदाहरण के लिए, मेरी स्थिति में यह अलग-अलग एप्लिकेशन मॉड्यूल से एक ही समय में एक विशिष्ट कुंजी के लिए दो रीड अनुरोध थे।
यह तय करने के लिए कि मैंने इस मान को मेमोरी में कैशिंग किया है


1

मुझे एक ही समस्या हो रही थी, नीले रंग से, Xcode 6.2, iPhone 6, iOS 8.3 के साथ एक परीक्षण उपकरण पर चल रहा है। स्पष्ट होने के लिए, यह एक्सकोड परीक्षणों को चलाने के दौरान अनुभव नहीं किया गया था, बल्कि मेरे डिवाइस पर वास्तविक ऐप चलाते समय। सिम्युलेटर में यह ठीक था, और ऐप पर ही चल रहा था यह हाल तक पूरी तरह से ठीक था।

मैंने उन सभी सुझावों की कोशिश की, जो मुझे यहां मिल सकते हैं, जैसे कि मेरे डिवाइस पर प्रोविज़निंग प्रोफाइल को हटाना (मैंने उन सभी को हटा दिया), अस्थायी रूप से मेरी परियोजना में किचेन शेयरिंग क्षमता को सक्षम करना (भले ही हमें वास्तव में उस की आवश्यकता नहीं है), बनाना सुनिश्चित करें कि Xcode में मेरा विकास खाता पूरी तरह से सभी प्रमाणपत्रों और प्रोविजनिंग प्रोफाइल आदि के साथ ताज़ा था, कुछ भी मदद नहीं की।

तब मैं अस्थायी रूप से से पहुँच स्तर बदल kSecAttrAccessibleAfterFirstUnlockकरने के लिए kSecAttrAccessibleAlwaysThisDeviceOnly, एप्लिकेशन भाग गया, और यह ठीक काम किया है और कीचेन पर लिखने में सक्षम था। फिर मैंने इसे वापस बदल दिया kSecAttrAccessibleAfterFirstUnlock, और समस्या "स्थायी रूप से" चली गई लगती है।


1

बस Xcode 8 बीटा पर इस बग को काट लिया गया। 3. किचेन शेयरिंग को चालू करना ही एकमात्र उपाय प्रतीत होता है।


1

मेरी भी यही समस्या थी। किचेन शेयरिंग की स्थापना करके इसे ठीक किया।


1

(यह ओपी के सवाल का सीधा जवाब नहीं है, लेकिन दूसरों की मदद कर सकता है)

7.3.1 से 8.0 तक के संस्करण में Xcode अपडेट करने के बाद कीचेन त्रुटि -34018 को सिम्युलेटर में लगातार मिलना शुरू हो गया।

ददई के जवाब से इस टिप के बाद ,

समस्या के कुछ उदाहरण गलत ऐप साइनिंग के कारण होते हैं। आप इस मामले को आसानी से पहचान सकते हैं क्योंकि समस्या 100% प्रतिलिपि प्रस्तुत करने योग्य है।

यह पता चला कि प्रोविजनिंग प्रोफाइल किसी तरह लक्ष्य के साइनिंग सेक्शन में किसी को भी सेट नहीं किया गया था।

हालाँकि, मान्य मानों में प्रोविज़निंग प्रोफाइल फ़ील्ड सेट करना इस मामले में समस्या को हल करने के लिए पर्याप्त नहीं था।

आगे की जांच से पता चला कि पुश नोटिफिकेशन एंटाइटेलमेंट में भी त्रुटि दिखाई दी। इसने कहा कि "पुश नोटिफिकेशन फीचर को अपनी ऐप आईडी में जोड़ें।" कदम पूरा हो गया था, लेकिन चरण "पुश नोटिफिकेशन एंटाइटेलमेंट को अपनी एंटाइटेलमेंट फ़ाइल में जोड़ें" नहीं था।

पुश नोटिफिकेशन समस्या को ठीक करने के लिए "फिक्स इश्यू" को दबाने के बाद, किचेन एरर को हल किया गया।

इस विशेष लक्ष्य के लिए, "किचेन शेयरिंग" पात्रता पहले से ही कुछ पिछले समय पर चालू हो गई थी। इसे बंद करने से किचेन में त्रुटि अब तक नहीं हुई है, इसलिए यह स्पष्ट नहीं है कि इस मामले में यह आवश्यक है या नहीं।


0

IOS 9 में मैंने एड्रेस सेनिटाइज़र को बंद कर दिया और इसने डिवाइस पर काम करना शुरू कर दिया।


0

मेरे लिए काम करने वाला एकमात्र समाधान पहले निर्दिष्ट कुंजी के लिए नील का भंडारण था , और फिर एक अलग ऑपरेशन के साथ मेरे नए मूल्य को संग्रहीत करना। यदि मैं मौजूदा मान को अधिलेखित करने का प्रयास करता हूं तो यह त्रुटि -34018 के कारण विफल हो जाएगा। लेकिन जब तक मैं पहली बार निल संग्रहीत करता हूं , तब तक अद्यतन मूल्य तुरंत बाद में संग्रहीत किया जाएगा।


0

जब मैं SecItemDelete API चला रहा था तब मैं इस -34018 अंक को मिला था। मैंने इसे ठीक करने के लिए क्या किया है: 1. @ k1th समाधान https://stackoverflow.com/a/33085955/889892 के बाद । मुख्य भाग में SecItemDelete चलाएँ (पहले यह मुख्य धागे से पढ़ा गया है, इसलिए इसे हटाने के साथ ही पढ़ें) ।

क्षमा करें यह फिर से वापस आता है :(


0

अपने प्रोजेक्ट की क्षमताओं में किचेन शेयरिंग चालू करें , इससे समस्या का समाधान होना चाहिए। यहां छवि विवरण दर्ज करें


0

मेरे लिए क्या काम किया

  • किचेन शेयरिंग चालू करें।
  • किचेन का कम से कम इस्तेमाल करें और डेटा को मेमोरी, यूजरप्रीफेरेंस, डिस्क आदि में कैशे करें।
  • यदि ये विफल हुए तो किचेन CRUD ऑपरेशन को कई बार करें।
  • डेटा को संग्रहीत / हटाने / अद्यतन करने के लिए DispatchQueue.sync का उपयोग करें।

0

मेरे लिए यह एक ऐप साइनिंग इश्यू था। मैंने केवल Xcode में सही हस्ताक्षर करने वाली टीम पर स्विच किया और त्रुटि अब नहीं हुई

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.