0

だから私は私の appDelegate.h でこれを宣言しました

       @property(nonatomic,strong) NSMutableArray *featured;

appDelegate.m でそのように合成しました

       @synthesize featured;

そこにオブジェクトが保存されているappDelegateでそれをログアウトすると、本来あるべき値が得られます

viewController.h ファイルで、これを宣言しました

       @property(nonatomic,strong) NSMutableArray *featured;

viewController.m ファイルでは、このように合成しました

       @synthesize featured;

次に、この行を出力して null 値を取得します

       NSLog(@"HERE %@", featured);

同じ行が appDelegate.m ファイルの正しい値を出力します。私は完全に迷っています。以前のクラスの演習で行った方法でセットアップしました。前もって感謝します!

編集:

loadFeatured と呼ばれるメソッドで appDelegate.m ファイルに配列を作成しました

  featured = [NSMutableArray array];

for (id dict in tempArray)
{
    //NSLog(@"dict=%@",dict);

    NSString *shopName = [dict objectForKey:@"shopName"];
    NSString *drinkName = [dict objectForKey:@"drinkName"];
    NSNumber *likes = [dict objectForKey:@"likes"];
    NSNumber *dislikes = [dict objectForKey:@"dislikes"];
    NSString *review = [dict objectForKey:@"review"];        

    Featured *feat = [[Featured alloc] initWithName:shopName drinkName:drinkName likes:likes dislikes:dislikes review:review];
    NSLog(@"feat=%@\n\n",feat);
    [featured addObject:feat];
}

NSLog(@"there is %d featured",[featured count]);
NSLog(@"HERE %@", featured);
4

4 に答える 4

2

アプリの構造を知らずにこれを行う方法を言うのは困難です。アプリデリゲートからビューコントローラーにアクセスできる場合は、配列へのポインターをビューコントローラーに渡すことができます。もう 1 つの方法は、ビュー コントローラーでアプリ デリゲートへの参照を取得し、その配列にアクセスすることです。それは次のように行うことができます:

AppDelegate *appDel = [UIApplication shared application].delegate;
NSArray *myControllerArray = appDel.featured;

このアプローチを使用するには、アプリのデリゲートをコントローラーの .m ファイルにインポートする必要があります。

于 2013-05-17T03:43:16.790 に答える
2

ビューコントローラーからアプリデリゲートに保存されているデータにアクセスする方法は次のとおりです。

ビューコントローラーでオブジェクトを合成する必要はありません。appdelegate ファイルをインポートし、必要な場所に次のコードをコピーするだけです。

NSMutableArray * nArray =[ (AppDelegate*) [[UIApplication sharedApplication] delegate] featured];

上記のコードは、アプリ デリゲートから必要な配列を取得します。これで、nArray オブジェクトを使用してコンソールに詳細を表示できます。

NSLog(@"%@",nArray.description);
于 2013-05-17T03:43:46.853 に答える
2

すでに appDelegate.h でプロパティを宣言しているので、次のように他の viewController でアクセスできます。

#import "appDelegate.h"

次のようなものを使用して値にアクセスできます。

((AppDelegate *)[[UIApplication sharedApplication]delegate]).featured
于 2013-05-17T03:48:07.430 に答える
1

NSArrayを介して任意のクラスの またはその他のオブジェクトにアクセスする必要がある場合は、クラスで次のように、AppDelegateにアクセスするためのプロパティを作成するだけです。ViewControllerAppDelegate

#import "ViewController.h"

@property (nonatomic, strong) AppDelegate *appDelegate;
@property (nonatomic, strong) ViewController *viewController; 

あなたのViewControllerクラスで:

#import "AppDelegate.h"

AppDelegate    *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
ViewController *viewControllerREFERENCE = [appDelegate viewController];

次に、AppDelegate を介して、ViewController の任意の値にアクセスできます。お役に立てば幸いです。

于 2013-05-17T03:43:26.567 に答える