0

私が欲しいもの:

iPhoneでは、ユーザーはいくつかの値を入力し、保存ボタンをタップします。アプリはのインスタンスに値を保存し、VehicleClassそれをに追加する必要がありNSMutableArrayます。

あなたが助けることができることを願っています。

ViewController.h

#import <UIKit/UIKit.h>
#import "VehicleClass.h"

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *producerTextField;
@property (weak, nonatomic) IBOutlet UITextField *modelTextField;
@property (weak, nonatomic) IBOutlet UITextField *pYearTextField;
@property (weak, nonatomic) IBOutlet UITextField *priceTextField;

@property (weak, nonatomic) NSMutableArray *carArray;
@property (weak, nonatomic) IBOutlet UILabel *statusLabel;


- (IBAction)addCar:(id)sender;
- (IBAction)showCars:(id)sender;

@end

ViewController.m

@synthesize producerTextField, modelTextField, pYearTextField, priceTextField, carArray;

- (void)viewDidLoad
{
    [super viewDidLoad];

    carArray = [NSMutableArray array];
}

- (IBAction)addCar:(id)sender
{
    VehicleClass *newVehic = [[VehicleClass alloc]initWithProducer:producerTextField.text 
                                                          andModel:modelTextField.text
                                                          andPYear:producerTextField.text
                                                          andPrice:priceTextField.text];

    [carArray addObject:newVehic];
    if (carArray != nil) {
        statusLabel.text = @"Car saved to array.";
    }
    else {
        statusLabel.text = @"Error, check your code.";
    }
}

VehicleClass.h

#import <Foundation/Foundation.h>

@interface VehicleClass : NSObject

@property (weak, nonatomic) NSString *producer;
@property (weak, nonatomic) NSString *model;
@property (weak, nonatomic) NSString *pYear;
@property (weak, nonatomic) NSString *price;


-(id)initWithProducer:(NSString *)varProducer 
             andModel:(NSString *)varModel 
             andPYear:(NSString *)varPYear 
             andPrice:(NSString *)varPrice; 

@end

VehicleClass.m

#import "VehicleClass.h"

@implementation VehicleClass

@synthesize model, price,pYear,producer;


-(id)initWithProducer:(NSString *)varProducer 
             andModel:(NSString *)varModel 
             andPYear:(NSString *)varPYear 
             andPrice:(NSString *)varPrice
{
    self = [super init];
    if (self != nil) 
    {
        producer = varProducer;
        model = varModel;
        pYear = varPYear;
        price = varPYear;
    }
    return self;
}

@end

たぶん、問題は私のinitメソッドと関係がありますか?

4

3 に答える 3

3

carArrayは弱いプロパティであり、強い必要があります。

またself.carArray、 ではなく を使用する必要がありcarArrayます。を使用する場合carArray、実際のプロパティではなく、基礎となる iVar を使用しています。後々混乱の元になります。

于 2012-07-24T12:30:20.623 に答える
0

あなたのcarArrayは弱い特性です。carArrayは強力である必要があります。

于 2012-07-24T13:15:10.047 に答える
0

あなたのプロパティは、ではなくproperty (weak, nonatomic)property (nonatomic, retain)です。

init メソッドに次のように入力します。

-(id)initWithProducer:(NSString *)varProducer 
             andModel:(NSString *)varModel 
             andPYear:(NSString *)varPYear 
             andPrice:(NSString *)varPrice
{
    self = [super init];
    if (self != nil) 
    {
        self.producer = varProducer;
        self.model = varModel;
        self.pYear = varPYear;
        self.price = varPYear;
    }
    return self;
}

次に、オブジェクトがあるかどうかを確認するには、 を使用するcarArray代わりに を使用します。これは、既に初期化されているためです。if (carArray != nil)if ([carArray count] > 0)

于 2012-07-24T12:33:17.233 に答える