2012-04-07 46 views
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); 
} 
+0

你不使用Appdelegate类来存储全局值吗? – 2012-04-07 04:49:45

回答

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

要需要字符串:

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

OR

在anotherView

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

在.M的.h文件中另一个文件的文件

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

    useridStr=string 
} 
return self; 
} 

在的firstView

-(IBAction)btnNext_TouchUpInside:(id)sender{ 
nextView *second =[[nextView alloc]initUserInfo:useridStr]; 
[self presentModalViewController:second animated:NO]; 
} 
1

的.m文件提出的Piyush什么也是正确的。但还有另一种实现方法。

正如他建议NSUserDefaults拯救你应该记住,NSUserDefaults一般用来保存像您要申请是由用户关闭后它被存储的偏好数据数据,并再次希望这些数据当你开始你的应用程序。

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