2013-07-29 87 views
0

我想在iOS中存儲全局數據,例如網絡中的會話數據。除了sqlite以外,什麼是最好的方法?在iOS中存儲臨時數據

+2

你想nsuserdefault – Jitendra

+1

我的目的是將數據從一個視圖控制器發送到其他視圖控制器。那是合適的。它比委託更好嗎? – Susitha

+1

@Susitha NSUserDefaults不是你想要的...在網站會話數據被使用,因爲沒有簡單的方法在網頁之間發送數據。在Objective-C中,您可以直接通過方法傳遞數據。 –

回答

1

使用NSUserDefaults
NSUserDefaults非常適合保存samm數據,如分數,登錄信息,程序狀態。您不需要數據庫知識並且易於學習和使用。

下面是文檔:
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

這裏是一個很好的教程:
http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/

編輯: 雖然,根據您的評論看來,你只是想通過之間的數據ViewControllers。 方式一:

讓我們假設你想從ViewControllerA通過NSStringmyStringViewControllerB。 然後在ViewControllerB中創建一個像這樣的屬性。

@property (strong, nonatomic) NSString *passedString;// strong if you are using RC, ow retain 

ViewControllerA.m,當你分配,啓動ViewControllerB,然後

ViewControllerB *viewControllerB = [[ViewControllerB alloc]init]; 
viewControllerB.passedString = myString; 

另一種方式:(更多的是全局變量類型的方式)

可以在申報財產AppDelegate.h

@property (strong, nonatomic) NSString *passedString; 

在ViewControllerB,您可以創建AppDelgate對象和訪問屬性:

AppDelegate *app = [[UIApplication sharedApplication]delegate]; 
NSString *passedString = app.passedString; 
1

您可以直接編寫基本類型,如NSNumberNSStringNSArrayNSDictionary,等進入NSUserDefaults。這些會在應用程序會話之間自動保存/加載。

NSString* myData = @"someValue"; 
[[NSUserDefaults standardUserDefaults] setObject:myData forKey:@"myData"]; 

對於更復雜的數據類型,您可以利用NSCoder和NSCoding協議輕鬆使您的類可序列化。

答案中的代碼可能會有幫助。 Save own Class with NSCoder

0

如果您的店鋪數據有限,請隨時使用NSUserDefaultsApple Reference for NSUserDefaults

例如,您需要將某些字符串(比如名稱)存儲到用戶默認值中。

NSString *name = "Your Name"; 
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:name forKey:@"name"]; 
[defaults synchronize]; 

這裏重要的是,一旦你的setObject關鍵做,你必須調用synchronize方法,使這些變化獲取存儲在用戶默認

訪問同一個firstname字符串

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[defaults objectForKey:@"name"]; 
1

您可以使用NSUserDefaults

保存數據,你可以使用此代碼

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:@"Dilip" forKey:@"firstName"]; 
    [defaults setObject:@"Manek" forKey:@"lastname"]; 
    [defaults setInteger:24 forKey:@"age"]; 
    [defaults synchronize]; 

而且用於檢索數據使用此代碼

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *firstName = [defaults objectForKey:@"firstName"]; 
    NSString *lastName = [defaults objectForKey:@"lastname"]; 
    int age = [defaults integerForKey:@"age"]; 
    NSString *ageString = [NSString stringWithFormat:@"%i",age]; 

您還可以在NSUserDefault存儲NSDictionaryNSArray,或者NSData的對象。對於更多信息看看this教程。

另一種在viewController之間傳遞數據的方式就是這樣。

,我們有兩個視圖控制器

-FirstViewController

-SecondViewController

現在,如果我想通過從第一串到第二的ViewController thanfirst在secondViewcontroller

#import <UIKit/UIKit.h> 

@interface SecondViewcontroller : UIViewController 
@property (strong, nonatomic) NSString *strFromFirst; 
@end 
創建一個字符串的屬性

將其合成到.m文件中。之後,在firstViewController當你推視圖控制器發送字符串第二的ViewController

SecondViewcontroller * vc = [[SecondViewcontroller alloc] initWithNibName:@"SecondViewcontroller" bundle:nil]; 

    // Pass the selected object to the SecondViewcontroller. 
    fraudluntReportViewController.strFromFirst = @"Dilip"; 

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

這將從FirstViewController發送字符串SecondViewController。

1

您需要使用NSUSERDefault,它非常容易處理。

您可以保存的NSString,NSDictionaray,NSNumber的在NSUserDefault這樣的..

//存儲陣列值

NSMutableArray *array = [NSMutableArray array]; 
[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"array"]; 

// Stroe的字符串nsuserDefault

NSString *[email protected]"ABC"; 
[[NSUserDefaults standardUserDefaults] setObject:str forKey:@"value"];