मैं विधि इस सवाल में दिए गए विवरण का उपयोग करके इस हल:
Can you make the settings in Settings.bundle default even if you don't open the Settings App
मैं मूल रूप से अनुवाद समारोह registe rdefaultsFromSettingsBundle मोनो टच में सूचीबद्ध है। यह एक बहुत ही उपयोगी फ़ंक्शन है क्योंकि यह सेटिंग बंडल में सूचीबद्ध डिफ़ॉल्ट मानों के लिए रजिस्टर डिफ़ॉल्ट को कॉल करता है। यह सुनिश्चित करता है कि यदि उपयोगकर्ता ने कोई मान दर्ज नहीं किया है, तो परिभाषित डिफ़ॉल्ट मान शून्य मानों के बजाय वापस किए जाएंगे। इसे AppDelegate के FinishedLaunching से बुलाया जा सकता है।
public static void RegisterDefaultsFromSettingsBundle()
{
string settingsBundle = NSBundle.MainBundle.PathForResource("Settings", @"bundle");
if(settingsBundle == null) {
System.Console.WriteLine(@"Could not find Settings.bundle");
return;
}
NSString keyString = new NSString(@"Key");
NSString defaultString = new NSString(@"DefaultValue");
NSDictionary settings = NSDictionary.FromFile(Path.Combine(settingsBundle,@"Root.plist"));
NSArray preferences = (NSArray) settings.ValueForKey(new NSString(@"PreferenceSpecifiers"));
NSMutableDictionary defaultsToRegister = new NSMutableDictionary();
for (uint i=0; i<preferences.Count; i++) {
NSDictionary prefSpecification = new NSDictionary(preferences.ValueAt(i));
NSString key = (NSString) prefSpecification.ValueForKey(keyString);
if(key != null) {
NSObject def = prefSpecification.ValueForKey(defaultString);
if (def != null) {
defaultsToRegister.SetValueForKey(def, key);
}
}
}
NSUserDefaults.StandardUserDefaults.RegisterDefaults(defaultsToRegister);
}
मुझे आशा है कि अन्य MonoTouch डेवलपर्स इस उपयोगी पाते हैं:
यहाँ इस समारोह के MonoTouch संस्करण है।
अद्यतन:
NSDictionary prefSpecification = new NSDictionary(preferences.ValueAt(i));
ध्यान दें कि यह अपवाद iOS 8
की वजह से, बल्कि इसलिए Xamarin बनाने का फैसला किया गया है नहीं होती है:
Xamarin.iOS
के नवीनतम संस्करण के साथ इस कोड को इस लाइन पर एक अपवाद फेंक होगा कन्स्ट्रक्टर जो कोड निजी पर निर्भर करता है, इसलिए आवश्यक कन्स्ट्रक्टर का उपयोग करने के लिए उपलब्ध नहीं है। मैं NSDictionary
इस तरह उपवर्गीकरण द्वारा इस का समाधान: ल्यूक
CustomNSDictionary prefSpecification = new CustomNSDictionary(preferences.ValueAt(i));
धन्यवाद,:
तो आप निम्नलिखित के साथ समस्याग्रस्त लाइन बदल सकते हैं। मैंने थोड़ा अलग दृष्टिकोण लिया, लेकिन मुझे उस कोड का अनुवाद मिला जो मैंने उपयोगी पोस्ट किया था। – BruceHill