0

現在、私のiPhoneアプリケーションでは、オブジェクトからに大量のデータを保存しています。小さなデータを保存することだけを目的としているため、これが最善のアプローチではないことを私は知っています。NSDataNSUserDefaultsNSUserDefaults

私はこれを次のようにしています:

NSData *data = [NSData alloc]init]];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MyData"];

このデータの遅延取得用。

data今後使用するためにこれを永続的に保存する正しい方法は何ですか?

4

2 に答える 2

2

必要なプロパティ(.hファイル)を使用してカスタムクラスを作成します。

#import <Foundation/Foundation.h>

@interface CustomHolder : NSObject {
    NData *data;
}

@property (strong, nonatomic) NSData *data;

@end

次に、オブジェクトをエンコード/デコードできるように.mファイルを設定します

#import "CustomHolder.h"

@implementation CustomHolder

@synthesize data;

- (void)encodeWithCoder:(NSCoder *)encoder 
{
    [encoder encodeObject:data forKey:@"data"];
}

- (id)initWithCoder:(NSCoder *)decoder 
{
    if (self = [super init]) 
    {
        self.data = [decoder decodeObjectForKey:@"data"]; 
    }
    return self;
}

@end

[NSKeyedArchiver archiveRootObject:obj toFile:[self saveFilePath]]次に、保存し[NSKeyedUnarchiver unarchiveObjectWithFile:[self saveFilePath]]てロードするだけです。

これはあらゆる種類のデータに対して機能し、オブジェクトに必要な数の異なるデータファイルを追加するオプションを提供します。

于 2012-07-11T14:29:29.563 に答える
1

NSUserDefaultsは、複雑なデータ構造ではなく、少量のデータに便利です。データを保存する外部サーバーがない限り、データを保存する実際の「永続的な」方法はありませんが、Core Dataは、デバイス上に保存するのに適した方法です。アプリケーションは削除されません。

Ray Wenderlichによるこのチュートリアルは、良い出発点です。NSManagedObjectの概念、fetchRequestsなどを紹介します。データスキーマを段階的に構築できるように、いくつかの部分があります。

幸運を

于 2012-07-11T14:28:04.397 に答える