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 和一堆文本标签,它们将显示每个属性(以及图像的 imagewell)。

我的问题是如何存储这些数据?我了解 NSArray、NSDictionary、ArrayController 和 DictionaryController 分别是什么。我只是对如何让它们一起工作有点困惑。当我添加一个新的“汽车”时,我应该用它的属性实例化一个新的“汽车”对象吗?那时我是否将新对象添加到数组中,然后释放创建的“汽车”对象?我是否将表格视图和文本标签链接到 NSDictionary 控制器?我什至不确定此时我应该问什么。

也许我有点过头了。除了 Apple 的文档(非常好,但对于业余爱好者来说过于冗长)之外,还有什么值得推荐的来学习如何创建与此类似的应用程序?

任何帮助是极大的赞赏。谢谢你。

4

1 回答 1

0

这里有很多问题:

您想永久存储它们吗?如果是这样,您需要开始学习 Core Data。

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 回答