1

私が見つけた最も関連性の高い議論:Objective-Cでオブジェクトの配列を作成する。。この投稿を準備したときに表示されたリンクをスキャンしました。

自習モード。本のチュートリアルで取り組んでいるアイデアを強化および拡張するためのミニアプリを作成します。……………。

目標:別のオブジェクト(サンプルクラス'TourCompany')に含まれる、いくつかのオブジェクト(サンプルクラス'Trip')を可変配列に格納すること。

(2つの異なるクラスインターフェイスファイルの一部)

    @interface Trip : NSObject
    @property (strong, nonatomic) NSString *travelToLocation;

……</p>

        @interface TourCompany : NSObject
        @property (strong, nonatomic) NSMutableArray *trips ;

……コードと目標のピース...。

1)3つのトリップオブジェクトを作成し、travelToLocationivar...にアクセスできることを示します。

        Trip *trip0 = [[Trip alloc] init];
        Trip *trip1 = [[Trip alloc] init];
        Trip *trip2 = [[Trip alloc] init];

        [trip0 setTravelToLocation:@"Vienna"];
        [trip1 setTravelToLocation:@"Mt. St. Helens"];
        [trip2 setTravelToLocation:@"Tenochtitlan"];

        NSString *somePlace1 = trip1.travelToLocation;

        NSLog(@" %@ %@, \n \t Let's LOOK at one particular trip ivar %@.", twoBlanks, nuLn, somePlace1);

     //  CONSOLE RESULTS
      //     Let's LOOK at one particular trip ivar Mt. St. Helens.

.... 2)I
i)これらの3つのトリップオブジェクトをローカルで宣言されたNSMutable配列に格納できることii)travelToLocationivarにアクセスできることを示します...。

     // put trip objects into a LOCALLY DECLARED mutable array
        NSMutableArray *localTripsArray = [NSMutableArray array ];

      //[myArray addObject: someOtherPerson]; - compare to a STackOverflow discussion

        [localTripsArray addObject:trip0];
     [localTripsArray addObject:trip1];
        [localTripsArray addObject:trip2];


        for (Trip *t in localTripsArray) {

            NSLog(@"\n \t ^^^Trip location in LOCAL TRIPS Mutable ARRAY is %@", t.travelToLocation );

     }



    /*
        CONSOLE RESULTS
     objectInMutableArrayMiniAppChallenge[521:f803] 
        ^^^Trip location in LOCAL TRIPS Mutable ARRAY is Vienna
2012-07-05 13:47:17.172 objectInMutableArrayMiniAppChallenge[521:f803] 
        ^^^Trip location in LOCAL TRIPS Mutable ARRAY is Mt. St. Helens
        2012-07-05 13:47:17.172 objectInMutableArrayMiniAppChallenge[521:f803] 
         ^^^Trip location in LOCAL TRIPS Mutable ARRAY is Tenochtitlan

        */

.... 3)しかし、TourCompanyクラス('friendlySkiesTourCo')のインスタンスにこれらの3つのオブジェクトをNSMutable配列('trips')に格納しない理由がわかりません...//オブジェクトをインスタンス化するようになりましたTourCompanyクラス

    TourCompany *friendlySkiesTourCo = [[TourCompany alloc] init];

 // put those same objects into the trips ivar in that object
 //[myArray addObject: someOtherPerson]; 
    //     - compare to a STackOverflow discussion
    //only difference I see is that instead of locally declared 'myArray'
    //   I'm using an ivar that's a member of an object
 // I know there's are values in those objects, because I displayed them above


 [friendlySkiesTourCo.trips addObject:trip0];
    [friendlySkiesTourCo.trips addObject:trip1];
    [friendlySkiesTourCo.trips addObject:trip2];


    for (Trip *t in friendlySkiesTourCo.trips) {

NSLog(@ "\ n \ t +++TourCompanyクラスオブジェクトであるオブジェクト'friendlySkiesTourCo'の'trips'可変配列のトリップ位置は%@"、t.travelToLocation);

    }


    /* Console NON-Results

    I never get any output from this NSLog directive
     I'll bet there is something pretty basic I don't understand
     No doubt, it's in the Gol Durned Manual online , but I'm not seeing it
     */

....4.問題が設定タイプの問題である可能性があることを再確認しましょう....
//オブジェクトをfriendlySkiesオブジェクトのこの特定の可変配列に正しく配置していないと思います//しましょうチェックするだけ

 int howManyTripsInMutableArray = [friendlySkiesTourCo.trips count];

 NSLog(@"\n \tThere are %d trips for the friendlySkiesTour Co ", howManyTripsInMutableArray);

        /*

     Sure enough...

     2012-07-05 13:53:53.235 objectInMutableArrayMiniAppChallenge[555:f803] 
    There are 0 trips for the friendlySkiesTour Co 

    */

手がかりをありがとう。私がこの記事を簡潔に作成したこと、そして私がRTGDMを実行しなかったとは思わないことを願っています(不思議に思うかもしれませんが、それは「ゴルダーン」です)。

月桂樹

4

2 に答える 2

3

初期化していないに違いありませんfriendlySkiesTourCo.trips。すなわち

friendlySkiesTourCo.trips = [[NSMutableArray alloc] init];

編集

以下のコメントで @Chuck が指摘したように、この割り当ては実際にはクラスの初期化メソッドで行う必要があります。

@implementation TourCompany

-(id) init
{
    self = [super init];

    self.trips = [[NSMutableArray alloc] init];

    return self;
}
于 2012-07-06T17:02:44.240 に答える
0

これは役に立ちますか?

trips =  [NSMutableArray arrayWithCapacity:3];
trip *trip1 = [[trip alloc] init];
trip *trip2 = [[trip alloc] init];
trip *trip3 = [[trip alloc] init];

trip1.traveltolocation = @"vienna";

[trips addObject:trip1];
[trips addObject:trip2];
[trips addObject:trip3];
于 2012-07-06T17:02:20.287 に答える