1

我正在尝试在函数之外以及类之外访问 nsstring 数据。

如何useridStr在函数和类之外访问?这是我的代码:

-(id)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *loginStatus = [[NSString alloc] initWithBytes:[webData mutableBytes]
        length:[webData length] encoding:NSUTF8StringEncoding];
    NSDictionary *loginDict = [[loginStatus JSONValue] objectForKey:@"UserDetails"];
    NSArray *userId = [loginDict valueForKey: @"userid"];
    NSString *useridStr = [userId lastObject];
    NSLog(@"--------------....%@", useridStr);
}
4

2 回答 2

3
NSUserDefaults *pre = [NSUserDefaults standardUserDefaults];
[pre setObject:useridStr forKey:@"useridStr"];

你想在哪里需要字符串:

NSUserDefaults *pre =[NSUserDefaults standardUserDefaults];
NSString * useridStr =[pre stringForKey:@"useridStr"];

或者

在另一个视图的 .h 文件中

-(id)initUserInfo:(NSString *)string;

在另一个视图的 .m 文件中

-(id)initUserInfo:(NSString *)string{   
if (self = [super initWithNibName:@"nextView" bundle:nil]) {

    useridStr=string
}
return self;
}

在 firstView 的 .m 文件中

-(IBAction)btnNext_TouchUpInside:(id)sender{
nextView *second =[[nextView alloc]initUserInfo:useridStr];
[self presentModalViewController:second animated:NO];
}
于 2012-04-07T04:34:24.420 回答
1

Piyush 的建议也是正确的。但是还有另一种方法可以实现它。

正如他建议NSUserDefaults保存数据时,您应该记住,NSUserDefaults通常用于保存数据,例如您希望存储的首选项,即使在应用程序被用户关闭并且您在启动应用程序时再次需要这些数据时也是如此。

因此,如果您想保存诸如首选项之类的数据,请选择 NSUserDefaults。如果您希望您的数据在整个应用程序运行时可用,并且您不需要像首选项一样保存它们,我建议您在Appdelegate文件中全局声明该对象并在需要时访问它们。您不应该将它们存储为NSUserDefaults,因为正如 Apple 文档所说,您在 NSUserDefaults中存储的任何内容都将保存在用户的默认数据库中。所以这会消耗你设备的内存。因此,简而言之,如果我们考虑内存管理概念,将所有内容保存到NSUserDefaults将不是一个好主意。

于 2012-04-07T06:00:20.467 回答