CFPrefsPlistSource iOS 10 में मान पढ़ने में विफल




xcode ios10 (6)

मैंने आज अपना Xcode 8 बीटा 2 में अपडेट किया है और मैं ऐप और टुडे एक्सटेंशन के बीच डेटा साझा करने का प्रयास कर रहा हूं। मैं इस लॉग चेतावनी के साथ सामना कर रहा हूँ:

2016-07-08 18: 00: 24.732472 प्रोजैक्टएक्स [941: 42801] [यूजर डिफॉल्ट्स] को CFPrefsPlistSource <0x1700f1280> (डोमेन: group .xpto, उपयोगकर्ता: kCFPreferencesAnyUser, ByHost: Yes, कंटेनर: null) में मान पढ़ने में विफल। : एक कंटेनर के साथ kCFPreferencesAnyUser का उपयोग करना केवल सिस्टम कंटेनर के लिए अनुमत है, cfprefsd से कोचिंग

कोई मुझे मदद कर सकता है?


Xcode 8.1 बीटा के साथ निर्माण करें और आप एक ही चेतावनी देखेंगे, लेकिन आपको मूल्य भी मिलेगा।


अपने मुख्य ऐप और अपने एक्सटेंशन के बीच डेटा पास करने के लिए ऐप ग्रुप्स के साथ NSUserDefaults का उपयोग कैसे करें:

  1. अपने मुख्य ऐप में, प्रोजेक्ट नेविगेटर में अपनी परियोजना का चयन करें।

  2. अपना मुख्य ऐप लक्ष्य चुनें और क्षमताएं टैब चुनें।

  3. एप्लिकेशन समूह को चालू करने के लिए स्विच करें। यह एंटाइटेलमेंट का एक सेट उत्पन्न करने के लिए डेवलपर पोर्टल के साथ संवाद करेगा।

  4. एक नया कंटेनर बनाएँ। Apple के अनुसार, आपकी कंटेनर आईडी "समूह" से शुरू होनी चाहिए, इसलिए "group.io.intrepid.myapp" जैसे नाम एकदम सही हैं।

  5. अपना एक्सटेंशन लक्ष्य चुनें और ऐप समूहों को सक्षम करने की प्रक्रिया दोहराएं। एक नया ऐप समूह न बनाएं, केवल उस समूह का चयन करें जिसे मुख्य ऐप लक्ष्य में बनाया गया था।

  6. अपने ऐप या अपने एक्सटेंशन में NSUserDefaults पढ़ते या लिखते समय, NSUserDefaults.standardUserDefaults () का उपयोग न करें। इसके बजाय NSUserDefaults (suiteName: "group.io.intrepid.myapp") का उपयोग करें। नोट: सुइट का नाम चरण 4 में आपके ऐप ग्रुप कंटेनर का नाम है।

सुनिश्चित करें, समूह सक्षम करें और एक्सटेंशन और ऐप क्षमता अनुभाग दोनों के लिए एक ही समूह आईडी का उपयोग करें!

इसका श्रेय http://blog.intrepid.io/ios-app-extensions को जाता है


मेरे macOS ऐप के साथ भी यही समस्या थी।

इसके द्वारा हल किया गया: डिवाइस को रिबूट करें!

https://.com/a/39876271


यदि आप इस समस्या को पीड़ित करते हैं जब आप userDefault का उपयोग करके एपीपी का विस्तार करने के लिए डेटा को बचाने की कोशिश करते हैं, तो शायद आपने यह कोड लिखा था:

[[NSUserDefaults standardUserDefaults] initWithSuiteName:@"group.xxx.com"];

यह कोड डिफ़ॉल्ट userDefault रीसेट userDefault

वास्तव में, सही कोड है:

[[NSUserDefaults alloc] initWithSuiteName:@"group.xxx.com"];

http://www.jianshu.com/p/e782104c3bc3


सुइटनाम (पोस्टफिक्स) मुख्य बंडल आईडी नहीं होना चाहिए।


से बदलें

[[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx.xxx"];

सेवा मेरे

[[NSUserDefaults alloc] initWithSuiteName:@"nnnnnnnnnn.group.com.xxx.xxx"]; 

जहाँ nnnnnnnnn आपकी टीम संख्या है, जिस पर आप अपने कोड पर हस्ताक्षर करने के लिए उपयोग करते हैं।

Xcode 8 GM और iOS 10 GM के तहत परीक्षण किया गया, और काम किया!







ios-app-group