NSUserDefaults not getting stored string value

雨燕双飞 提交于 2019-12-25 05:30:05

问题


I have UIWebView for reading content. After that i select some text from content stores in string using NSUserDefaults in Viewcontroller. Then i retrieve this string value and displays in UITextView to viewcontroller1. But the UITextView is not updating text from viewcontroller. The NSUserDefaults also not getting updating text. Im using [self.navigationController pushViewController:viewcontroller1 animated:YES]; for switch to viewcontroller1.

viewcontroller:

[wbCont loadHTMLString:webString baseURL:nil];
    [self.view addSubview:wbCont];

    NSMutableArray *items = [[[UIMenuController sharedMenuController] menuItems] mutableCopy];
    if (!items) items = [[NSMutableArray alloc] init];

    UIMenuItem *menuItem;
    menuItem = [[UIMenuItem alloc] initWithTitle:@"BookMark" action:@selector(save:)];
    [items addObject:menuItem];
    [menuItem release];
    menuItem = [[UIMenuItem alloc] initWithTitle:@"Note" action:@selector(note:)];
    [items addObject:menuItem];
    [menuItem release];

    [[UIMenuController sharedMenuController] setMenuItems:items];
    [items release];


- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(save:))
    {
        return YES;



    }
    else if (action == @selector(note:))
    {
        return YES;
    }
    else if (action == @selector(copy:))
    {
        return NO;
    }

    return [super canPerformAction:action withSender:sender];
}


    -(void)save:(id)sender{
        NSString   *selection = [wbCont stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];

        NSLog(@"selection is %@",selection);

         NSUserDefaults *userData1 = [NSUserDefaults standardUserDefaults];  
            [userData1 setObject:selection forKey:@"preferenceName"];

            [userData1 synchronize];

           [self.navigationController pushViewController:note animated:YES];

    }

viewcontroller1:

textView = [[UITextView alloc]initWithFrame:CGRectMake(0,0,320,400)];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    // getting an NSString
    NSString *savedValue = [prefs stringForKey:@"preferenceName"];
NSLog(@"saved is %@", savedValue);
textView.text = [NSString stringWithFormat:@"%@", savedValue];

回答1:


Allocation of textView is in viewDidLoad.

Updating of textView is in viewWillAppear.

-(void) viewWillAppear:(BOOL)animated
    [super viewWillAppear:animated];

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    // getting an NSString
    NSString *savedValue = [prefs stringForKey:@"preferenceName"];
    NSLog(@"saved is %@", savedValue);
    textView.text = [NSString stringWithFormat:@"%@", savedValue];
}



回答2:


I was checked your code just change NSSTring to NSString like below it will working.

-(void)save:(id)sender{
//    NSSTring   *selection = [wbCont stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];

    NSString   *selection = [wbCont stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];
    NSLog(@"selection is %@",selection);

     NSUserDefaults *userData1 = [NSUserDefaults standardUserDefaults];  
        [userData1 setObject:selection forKey:@"preferenceName"];

        [userData1 synchronize];

       [self.navigationController pushViewController:note animated:YES];

}


来源:https://stackoverflow.com/questions/19194569/nsuserdefaults-not-getting-stored-string-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!