Note that there are some explanatory texts on larger screens.

plurals
  1. POUnexpected difference between NSUserDefaults and Settings.bundle (iOS 4.3)
    text
    copied!<p>One of the first things my app does when starting is registering default values for its settings:</p> <pre><code>// Load default defaults NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]]; [defaults synchronize]; </code></pre> <p>Defaults.plist looks like this: </p> <pre><code>&lt;key&gt;WorkingHoursFriday&lt;/key&gt; &lt;integer&gt;28800&lt;/integer&gt; &lt;key&gt;WorkingHoursMonday&lt;/key&gt; &lt;integer&gt;28800&lt;/integer&gt; &lt;key&gt;WorkingHoursSaturday&lt;/key&gt; &lt;integer&gt;0&lt;/integer&gt; </code></pre> <p>The correct values show up later when <a href="https://stackoverflow.com/questions/809607/nsuserdefaults-dumping-the-structure-of-nsuserdefaultss-standarduserdefaults/809617#809617">dumping the defaults dictionary</a>: </p> <pre><code>WorkingHoursFriday = 28800; WorkingHoursMonday = 28800; WorkingHoursSaturday = 0; </code></pre> <p>The correct values are also returned when retrieving them specifically with <code>[defaults floatForKey:@"WorkingHoursSaturday"];</code> and so on.</p> <p>However, the Settings app displays the wrong times for these settings. Here's part of my Root.plist in Settings.bundle:</p> <pre><code> &lt;dict&gt; &lt;key&gt;Type&lt;/key&gt; &lt;string&gt;PSMultiValueSpecifier&lt;/string&gt; &lt;key&gt;Title&lt;/key&gt; &lt;string&gt;Monday&lt;/string&gt; &lt;key&gt;Key&lt;/key&gt; &lt;string&gt;WorkingHoursMonday&lt;/string&gt; &lt;key&gt;DefaultValue&lt;/key&gt; &lt;integer&gt;28800&lt;/integer&gt; &lt;key&gt;Titles&lt;/key&gt; &lt;array&gt; &lt;string&gt;Free&lt;/string&gt; &lt;string&gt;8 Hours&lt;/string&gt; ... &lt;/array&gt; &lt;key&gt;Values&lt;/key&gt; &lt;array&gt; &lt;integer&gt;0&lt;/integer&gt; &lt;integer&gt;28800&lt;/integer&gt; ... &lt;/array&gt; &lt;/dict&gt; &lt;dict&gt; &lt;key&gt;Type&lt;/key&gt; &lt;string&gt;PSMultiValueSpecifier&lt;/string&gt; &lt;key&gt;Title&lt;/key&gt; &lt;string&gt;Friday&lt;/string&gt; &lt;key&gt;Key&lt;/key&gt; &lt;string&gt;WorkingHoursFriday&lt;/string&gt; &lt;key&gt;DefaultValue&lt;/key&gt; &lt;integer&gt;28800&lt;/integer&gt; &lt;key&gt;Titles&lt;/key&gt; &lt;array&gt; &lt;integer&gt;Free&lt;/integer&gt; &lt;integer&gt;8 Hours&lt;/integer&gt; ... &lt;/array&gt; &lt;/dict&gt; &lt;dict&gt; &lt;key&gt;Type&lt;/key&gt; &lt;string&gt;PSMultiValueSpecifier&lt;/string&gt; &lt;key&gt;Title&lt;/key&gt; &lt;string&gt;Saturday&lt;/string&gt; &lt;key&gt;Key&lt;/key&gt; &lt;string&gt;WorkingHoursSaturday&lt;/string&gt; &lt;key&gt;DefaultValue&lt;/key&gt; &lt;integer&gt;28800&lt;/integer&gt; &lt;key&gt;Titles&lt;/key&gt; &lt;array&gt; &lt;string&gt;Free&lt;/string&gt; &lt;string&gt;8 Hours&lt;/string&gt; ... &lt;/array&gt; &lt;key&gt;Values&lt;/key&gt; &lt;array&gt; &lt;integer&gt;0&lt;/integer&gt; &lt;integer&gt;28800&lt;/integer&gt; ... &lt;/array&gt; &lt;/dict&gt; </code></pre> <p>And here's a screenshot of the settings app. WorkingHoursSaturday is set to 0, but the settings table still shows 8 hours:</p> <p><a href="https://imgur.com/4zV1E" rel="nofollow noreferrer"><img src="https://i.imgur.com/4zV1E.png" alt="" title="Hosted by imgur.com" /></a></p> <p>What am I missing?</p> <p><strong>Edit</strong>: Once I set WorkingHoursSaturday in Code, by calling <code>[defaults setInteger:0 forKey:@"WorkingHoursSaturday"];</code>, Settings.app shows the correct value. Maybe the call to <code>registerDefaults</code> is somehow incorrect?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload