2013-03-16 141 views
1

我的应用程序在启动时崩溃。请指点一下。非常感激。iOS:registerDefaults导致崩溃

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
{ 
NSDictionary *temp = @{@(0): NSStringFromCGPoint(CGPointZero), 
         @(1): NSStringFromCGPoint(CGPointZero), 
         @(2): NSStringFromCGPoint(CGPointZero), 
         @(3): NSStringFromCGPoint(CGPointZero), 
         }; 

// Pro 
NSDictionary *defaults = @{ // ... other PrefKeys 

          // No crash if I comment out this line 
          GMListVCOffsetsPrefKey:temp, 
          }; 

[[NSUserDefaults standardUserDefaults] registerDefaults: defaults]; 
} 
+0

你得到什么错误? – 2013-03-16 16:55:14

回答

4

plist中的键必须是字符串。在这里你有数字。

请参阅Property list documentation:“虽然NSDictionary和CFDictionary对象允许其键为任何类型的对象,但如果键不是字符串对象,则该集合不是属性列表对象”。

2

您正在使用非NSString键作为导致崩溃的临时数组。下面的代码不会崩溃。

NSDictionary *temp = @{@"0": NSStringFromCGPoint(CGPointZero), 
         @"1": NSStringFromCGPoint(CGPointZero), 
         @"2": NSStringFromCGPoint(CGPointZero), 
         @"3": NSStringFromCGPoint(CGPointZero), 
         }; 

// Pro 
NSDictionary *defaults = @{ // ... other PrefKeys 

          // No crash if I comment out this line 
          GMListVCOffsetsPrefKey:temp, 
          }; 

[[NSUserDefaults standardUserDefaults] registerDefaults: defaults];