插入用户默认字符串不起作用

时间:2014-02-04 19:10:13

标签: ios nsuserdefaults parse-platform

我现在正在尝试几个小时来弄清楚我缺少的东西:我从用户默认值中检索字符串值并将它们插入到频道ID中。这是我的代码:

    - (void)application:(UIApplication *)application            
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

   PFInstallation *currentInstallation = [PFInstallation currentInstallation];
   [currentInstallation setDeviceTokenFromData:deviceToken]

   NSString *channel5 = [defaults stringForKey:@"text_plain5"]; // THIS WORKS NOT

   [currentInstallation addUniqueObject:channel5 forKey:@"channels"];

   [currentInstallation saveInBackground];



    NSString *message = [defaults stringForKey:@"text_plain"]; // THIS WORKS
    NSString *ownNr = [defaults stringForKey:@"text_plain99"]; // THIS WORKS
    NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys:
                  message, @"alert",
                  @"so.mp3", @"sound",
                  nil];

    PFPush *push = [[PFPush alloc] init];
    [push setChannels:[NSArray arrayWithObjects:ownNr, nil]];
    [push setData:data];
    [push sendPushInBackground];

第一部分出了什么问题?

非常感谢!

2 个答案:

答案 0 :(得分:0)

就它本身而言,你在这里所做的事并没有错。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *channel5 = [defaults stringForKey:@"text_plain5"];

但是,由于您没有展示如何存储这些值,我们只能推测出错了什么。我首先检查一下,你确实为text_plain5设置了一个值。请记住,此密钥区分大小写。如果这不是问题,您需要确保在保存值的时间和读取值之间同步NSUserDefaults

答案 1 :(得分:0)

我有两个问题:我使用nil键调用defaultsToRegister -setObject:,这是抛出异常。 我通过在首次启动时加载具有默认值的plist来修复它:

NSString* pathToUserDefaultsValues = [[NSBundle mainBundle]
                                      pathForResource:@"Root~iphone"
                                      ofType:@"plist"];
NSDictionary* userDefaultsValues = [NSDictionary   dictionaryWithContentsOfFile:pathToUserDefaultsValues];

[[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValues];
[[NSUserDefaults standardUserDefaults] synchronize];

Danke Ortwin Gentz!