1

クラスで配列を作成して入力し、メインプログラムで配列のコンテンツを使用したい...例として、米国の州の名前のリストを使用します...

これは元の質問の更新であり、半分は解決されており、コードを適切に表示できるように明確にするために満足しています。

ArrayStates.h

#import <Foundation/Foundation.h>
@interface ArrayStates : NSObject
@end

ArrayStates.m

#import "ArrayStates.h"
@interface ArrayStates() { NSMutableArray *listOfStates; }
@implementation ArrayStates
- (void)viewDidLoad {
    //---initialize the array---
    listOfStates = [[NSMutableArray alloc] init];
    //---add items---
    [listOfStates addObject:@"ALABAMA"];

    [listOfStates addObject:@"WYOMING"];
    [super viewDidLoad];
}
@end

これは前の質問から更新されたコードですが、それでも実装行で Missing end エラーが生成されます。メソッドプロトタイプの後、メインプログラムでオブジェクトを参照できません。

インターフェイスと実装が配列にクラス内またはクラス外でアクセスできるかどうかを区別する場合、順序を変更すると思います(iHungryに感謝します)。

4

3 に答える 3

2

Mundi が .h で述べたようなプロパティを作成し、配列にアクセスする必要がある場所に ArrayStates.h をインポートするだけです。その後、クラス ArrayStates のインスタンスを作成し (オブジェクトと alloc-init を作成)、そのオブジェクトを使用してその listOfStates プロパティにアクセスできます。

于 2012-07-12T21:11:45.090 に答える
1
// in ArrayStates.h
@interface ArrayStates : NSObject
@property NSMutableArray *listOfStates;
@end

// in ArrayStates.m
@implementation ArrayStates
@synthesize listOfStates;
//...
-(void)viewDidLoad {
    [super viewDidLoad];
    listOfStates = [[NSMutableArray alloc] init];
}
@end

// in some other class
ArrayStates *states = [[ArrayStates alloc] init];
NSLog(@"%@", states.listOfStates);
于 2012-07-12T07:43:12.307 に答える
1

viewDidLoad メソッドでは、最初に super を呼び出す必要があります。ところで、あなたの ArrayStates クラスは NSObject のサブクラスなので、そのメソッド viewDidLoad は呼び出されません!

于 2012-07-12T07:33:39.987 に答える