さてさて、タイトル通りテーブルのデータを管理するクラスを作ってみようかと思う。

前回は下の4つのファイルを作りました。

PersonalData.h
PersonalData.m
PersonalDataManager.h
PersonalDataManager.m


PersonalDataたちは個人情報データを表現するクラス。
要素として「名前」を実装しました。

今日はPersonalDataManagerたちを実装しましょ。
まずは、PersonalDataManager.hから・・・

青枠の部分が追加した部分です。
無知の状態からiPhoneアプリ開発に挑んでみる-8-4-1
#import < Foundation/Foundation.h>
#import "PersonalData.h"

@interface PersonalDataManager : NSObject {
NSMutableArray *personalDataList;
}

+ (PersonalDataManager *)sharedPersonalDataManager;
- (PersonalData *)loadPersonalDataAtIndex:(NSUInteger)index;
- (NSUInteger)countOfPersonalData;

@end




つぎは、PersonalDataManager.mです。
もともとのソースはこれだけ↓
無知の状態からiPhoneアプリ開発に挑んでみる-8-4-2

これらのメソッドやなんやらを追加します。

が、今回は今までの様にソースコードの画像はアップしません。
なんでかというと、でかいからw
まず、
#import "PersonalDataManager.h"
の下にこれを書きます。
これは個人情報データの生成を行うプライベートメソッドの宣言。

@interface PersonalDataManager (PrivateMethods)

- (NSMutableArray *)generatePersonalData;

@end



次に大量コードですが、、
@implementation PersonalDataManager
と、最後の@endの間に書きます。
緑色のコメントが簡単な説明ですー。


static PersonalDataManager *sharedInstance; //自身のオブジェクトを保持するためのクラス変数の宣言

+ (PersonalDataManager *)sharedPersonalDataManager { //オブジェクトの取得を提供するメソッド
    
    if (sharedInstance == nil) {
        sharedInstance = [[PersonalDataManager alloc] init];
    }
    
    return sharedInstance;
}

- (id)init { //initメソッドのオーバーライド
    
    if ((self = [super init]) == nil) {
        return nil;
    }
    
    personalDataList = [self generatePersonalData];
    
    return self;
}
- (void)dealloc { //deallocメソッドのオーバーライド
    
    [personalDataList release];
    [super dealloc];
}
- (PersonalData *)loadPersonalDataAtIndex:(NSUInteger)index { //指定した1件のデータオブジェクト取得するメソッド
    
    if (index >= 0 && index < [personalDataList count]) {
        return [personalDataList objectAtIndex:index];
    }
    
   return nil;
}
- (NSUInteger)countOfPersonalData { //データオブジェクトの個数を取得するメソッド
    
    return [personalDataList count];
}
- (NSMutableArray *)generatePersonalData { //個人情報データの生成を行うプライベートメソッド
    
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    @try {
        // names
        NSArray *names = [NSArray arrayWithObjects:
                          @"愛 飢え夫",
                          @"下記 句け子"",
                          @"指し 周世僧"",
                          @"達 津手斗"",
                          @"何 抜寝乃"",
                          @"葉比 負へ帆"",
                          @"真美 無眼藻"",
                          @"揶 由余"",
                          @"等裏 流列路"",
                          @"輪 ヲん"",
                          nil];
        
        NSMutableArray *tempDataList
        = [[NSMutableArray alloc] initWithCapacity:[names count]];
        
        for (int i = 0; i < [names count]; i++) {
            PersonalData *personalData = [[[PersonalData alloc] init] autorelease];
            personalData.name = [names objectAtIndex:i];
            [tempDataList addObject:personalData];
        }
        
        return tempDataList;
    }
    @finally {
        [pool release];
    }
    
    return nil;
}




な、長い。

とりあえず、実行してエラーがない事を確認!

画面にテーブル表示させるまであとすこしー!!!

にほんブログ村 携帯ブログ iPhoneへ
にほんブログ村

 > 次のテーマ テーブルをつくっていこう。
 > テーブルのデータを管理するクラスを作ってみる(★この記事★)
 > テーブルビューのコントローラーを作ってみる。
 > ついにテーブルの表示完成!
 > テーブルをいじくる。
 > テーブルを本当にいじくる
 > テーブルを本当に実装を始めるよ。
 > テーブルを改造しましょ。
 > テーブル改造のつづきやけど。。
 > テーブルのセルに電話番号を追加してみる。
 > モード切り替え用ボタンの追加
 > セル(データ)の削除処理と並び替え!
 > テーブルいじくりも大詰め?