2

免責事項: 私は 2 か月ほどの間、Objective C/Cocoa を学んできました。そして、愚かな初心者の質問でインターネットを詰まらせるのではなく、常に自分で答えを見つけようとすることを約束しました。この時点で、私は混乱しているだけで、この時点で質問することで利益が得られると思います. あらかじめお詫び申し上げます。

問題: 「My Dream Garage」というマスター/ディテール スタイルのアプリ (これは練習用です) を作成しようとしています。基本的に、車のオブジェクトとそのプロパティを保存したいと考えています。次のような「車」クラスがあります。

#import <Foundation/Foundation.h>

@interface Car : NSObject
@property (nonatomic, strong) NSString *brand, *model, *trimLevel;
@property (nonatomic, strong) NSNumber *modelYear, *engineSizeinL, *weight;
@property (nonatomic, strong) id image;
@end

メインの .XIB ファイルには、NSTableView と、各プロパティ (および画像のイメージウェル) を表示する一連のテキスト ラベルがあります。

私の質問は、このデータをどのように保存するのですか? NSArray、NSDictionary、ArrayController、DictionaryController が個別に何であるかを理解しています。それらを連携させる方法について少し混乱しています。新しい「車」を追加するとき、そのプロパティを使用して新しい「車」オブジェクトをインスタンス化する必要がありますか? その時点で、新しいオブジェクトを配列に追加してから、作成した "Car" オブジェクトを解放しますか? tableview と text-labels を NSDictionary Controller にリンクしますか? この時点で何を尋ねるべきかさえわかりません。

たぶん、私は頭を少し超えています。これに似たアプリを作成する方法を学ぶには、Apple のドキュメント (非常に優れていますが、アマチュアには冗長すぎる) 以外に何が推奨されますか?

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

0

ここにたくさんの質問があります:

それらをある程度永久に保存したいですか?もしそうなら、コアデータの学習を開始する必要があります。

Car クラスの実装ファイルはどのようなものですか? 新しいオブジェクトのインスタンス化と初期化をどのように行っていますか?

私のクラスオブジェクトは通常、次のようになります。

インターフェース:

@interface UserInfo : NSObject {
    NSString *_networkID;
    NSString *_displayName;
    NSString *_userDomain;
    BOOL _loggedIn;
}
@property(nonatomic,strong) NSString *networkID;
@property(nonatomic,strong) NSString *displayName;
@property(nonatomic,strong) NSString *userDomain;
@property(nonatomic) BOOL loggedIn;

-(id) initWithUserNetworkID:(NSString *)networkID 
                displayName:(NSString *)displayName  
                 userDomain:(NSString *)userDomain;

@end

実装:

#import "UserInfo.h"

@implementation UserInfo

@synthesize networkID = _networkID;
@synthesize displayName = _displayName;
@synthesize loggedIn = _loggedIn;
@synthesize userDomain = _userDomain;


-(id) initWithUserNetworkID:(NSString *)networkID 
                displayName:(NSString *)displayName 
                 userDomain:(NSString *)userDomain {

    if ((self = [super init])) {
        _networkID = [networkID copy];
        _displayName = [displayName copy];
        _userDomain = [userDomain copy];
        _loggedIn = YES;
    }

    return self;
}

@end

そして、次のようなコードで新しいものを作成します。

UserInfo *myUserInfo = [[UserInfo alloc] 
                                initWithUserNetworkID:[loginDictionary objectForKey:@"NetworkID"]  
                                displayName:[loginDictionary objectForKey:@"DisplayName"] 
                                userDomain:[loginDictionary objectForKey:@"UserDomain"]];
于 2012-07-30T20:34:23.610 に答える