2012-04-07 44 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將不是一個好主意。