1

次のコードを取得しました。

しばらくデバッグしてみます。それを理解することはできません。

    [self.vManager vendorsNearLocation:userLocation block:^(NSArray *vendors, NSError   *error)
     {
         self.vManager.vendors_array = [NSArray arrayWithArray:vendors];
         NSLog(@"Vendors array was %d long", [self.vManager.vendors_array count]);
         if(vendors && [vendors count])
         {
             for (id v in vendors)
             {
                 Vendor *aVendor = [[Vendor alloc] initWithAttributes:v];
                 [self.mapView addAnnotation:aVendor];
                 [self.vManager.vendor_dict setObject:aVendor
                                              forKey:[aVendor name]];

そのループで辞書の値を設定したいと思っていました。しかし、辞書は常に空です。エラーや警告はなく、何も設定されていませんが、配列には値があり、マップにはすべてのベンダーが表示されています。ちなみにvManagerはSingletonで、ディクショナリは呼び出し元のviewDidLoadメソッドで初期化されています

私が明らかに間違っていることはありますか?

4

1 に答える 1

1

SINGLETON クラス自体で辞書を初期化する必要があると思います。私は昨日同じことを試しましたが、うまくいきました。

関数を作成し、そこで辞書を初期化し、その辞書を使用する前にその関数を呼び出すだけです。

それは確かにうまくいくでしょう。

于 2012-10-27T06:49:42.877 に答える