मैं एक बंडल आईडी साझा करने के लिए आधा दर्जन कमांड लाइन टूल्स (परीक्षण के लिए प्रयुक्त) चाहता हूं ताकि वे एक NSUserDefaults और लाइब्रेरी/कैश सबफ़ोल्डर साझा कर सकें। मैं हार्ड-कोडेड स्ट्रिंग का उपयोग करके लाइब्रेरी/कैश सबफ़ोल्डर के आसपास पहुंच सकता हूं, लेकिन मैं उस फ़ाइल को कैसे सेट कर सकता हूं जिसे NSUserDefaults सहेजता है?
बंडल किए गए एप्लिकेशन में, यह Info.plist में बंडल आईडी द्वारा सेट किया जाता है। लेकिन मैं कमांड लाइन टूल्स के सेट के लिए बंडल आईडी कैसे सेट कर सकता हूं, जिसमें Info.plist नहीं है?
1 उत्तर
+standardUserDefaults
का उपयोग करने के बजाय, +alloc
और -init
के साथ NSUserDefaults इंस्टेंस बनाएं। इस तरह से बनाया गया उपयोगकर्ता डिफ़ॉल्ट इंस्टेंस मुख्य बंडल आईडी से संबंधित डिफ़ॉल्ट डोमेन के साथ नहीं बनाया जाएगा, इसलिए आपको -addSuiteNamed:
मैन्युअल रूप से जोड़ने की विधि इसके लिए एक डिफ़ॉल्ट डोमेन।
(अपडेट करें) क्षमा करें, मेरा बुरा! सूट अस्थिर होते हैं, स्थायी नहीं - उन टूल के लिए उपयोगी होते हैं जिन्हें डिफ़ॉल्ट के साझा सेट को पढ़ने की आवश्यकता होती है, उस एप्लिकेशन के लिए इतना नहीं जो डिफ़ॉल्ट मान सेट करना चाहता है। बाद के लिए, -setPersistentDomain:forName:
. डोमेन डिक्शनरी की कुंजियाँ परिभाषित करती हैं कि कौन सी कुंजियाँ नामित डिफॉल्ट डोमेन से संबंधित हैं, और मान उनके डिफ़ॉल्ट मानों की आपूर्ति करते हैं।
यहां एक छोटा सा उदाहरण दिया गया है, जिसे ~/Library/Defaults/com.shermpendley.DefaultsTest.plist बनाना चाहिए, और उसमें सूचीबद्ध कुंजी/मान युग्म को संग्रहित करना चाहिए:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSUserDefaults *defaults = [[NSUserDefaults alloc] init];
[defaults setPersistentDomain:[NSDictionary dictionaryWithObject:@"Hello" forKey:@"World"] forName:@"com.shermpendley.DefaultsTest"];
[defaults synchronize];
[defaults release];
[pool drain];
return 0;
}
संबंधित सवाल
नए सवाल
macos
macOS (जिसे पहले OS X या Mac OS X के नाम से जाना जाता था) Apple का डेस्कटॉप ऑपरेटिंग सिस्टम है, जो Macintosh कंप्यूटर पर पाया जाता है। इस टैग का उपयोग केवल तभी करें जब आपका प्रश्न macOS API या macOS- विशिष्ट व्यवहार का उपयोग करने से संबंधित हो, न कि यह कि आप अपने कोड को macOS चलाने के लिए करते हैं। MacOS का उपयोग करने या समस्या निवारण से संबंधित प्रश्न ऑफ़-टॉपिक हैं और इसके बजाय आस्क डिफरेंट कम्युनिटी में हैं।
CFPreferencesSetValue( (CFStringRef)key, (CFPropertyListRef)value, (CFStringRef)domain, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
CFPreferencesSetValue
लिखने के लिए मेरी आवश्यकताओं को पूरी तरह से पूरा करता है।