0

Web のセッション データのように、グローバルに iOS にデータを保存したいと考えています。sqlite 以外の最良のアプローチは何ですか?

4

5 に答える 5

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];

NSDictionaryNSArray、またはNSDataをオブジェクトとしてに保存することもできます。詳細については、このチュートリアルNSUserDefaultをご覧ください。

viewController間でデータを渡す別の方法はこんな感じです。

2 つの ViewController があるとします。

-FirstViewController

-SecondViewController

First から Second ViewController に文字列を渡したい場合は、first create Property of its string in secondViewcontroller

#import <UIKit/UIKit.h>

@interface SecondViewcontroller : UIViewController
@property (strong, nonatomic) NSString *strFromFirst;
@end

.m ファイルに合成します。その後、最初のViewControllerでビューコントローラーをプッシュすると、文字列が2番目のビューコントローラーに送信されます

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 に送信されます。

于 2013-07-29T05:32:24.473 に答える
1

非常に扱いやすい NSUSERDefault を使用する必要があります。

このように NSUserDefault に NSString、NSDictionaray、NSnumber を保存できます。

// 配列値を格納

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

// 文字列を nsuserDefault に格納

 NSString *str=@"ABC";
 [[NSUserDefaults standardUserDefaults] setObject:str forKey:@"value"];
于 2013-07-29T05:34:04.803 に答える
1

を使用しNSUserDefaultsます。
NSUserDefaults は、スコア、ログイン情報、プログラム状態などの samm データを保存するのに最適です。データベースの知識は必要なく、簡単に習得して使用できます。

ドキュメントは次のとおりです。
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

優れたチュートリアルは次のとおりです

編集:ただし、コメントに基づいて、ViewController間でデータを渡したいだけのようです。 一方通行 :

NSString myStringからに渡したいとしましょViewControllerAViewControllerB。次に、 でこのようなプロパティを作成します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;
于 2013-07-29T05:29:05.470 に答える
1

、、、、などNSNumberの基本型を に直接書き込むことができます。これらは、アプリ セッション間で自動的に保存/ロードされます。NSStringNSArrayNSDictionaryNSUserDefaults

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

より複雑なデータ型の場合、NSCoder と NSCoding プロトコルを利用して、クラスを簡単にシリアライズ可能にすることができます。

The code in the answer here may be helpful. Save own Class with NSCoder

于 2013-07-29T05:29:20.937 に答える
0

保存するデータが限られている場合は、自由に使用してNSUserDefaultsください。 NSUserDefaults の Apple リファレンス

たとえば、ユーザーのデフォルトに文字列(名前など)を保存する必要があります。

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"];
于 2013-07-29T05:31:49.973 に答える