0

所以我在我的 appDelegate.h 中声明了这一点

       @property(nonatomic,strong) NSMutableArray *featured;

我在我的 appDelegate.m 中像这样合成了它

       @synthesize featured;

当我使用存储在其中的对象在 appDelegate 中将其注销时,我得到了它应该具有的值

在 viewController.h 文件中,我声明了这一点

       @property(nonatomic,strong) NSMutableArray *featured;

在 viewController.m 文件中,我像这样合成了它

       @synthesize featured;

然后我打印出这一行并得到一个空值

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

同一行在我的 appDelegate.m 文件中打印出正确的值。我完全迷路了。我已经按照我在之前的课堂练习中所做的方式进行了设置。提前致谢!

编辑:

我在 appDelegate.m 文件中创建了数组,就像在我称为 loadFeatured 的方法中一样

  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

如果不了解应用程序的结构,很难说如何做到这一点。如果您可以从应用程序委托访问该视图控制器,则可以将指向该数组的指针传递给您的视图控制器。另一种方法是在视图控制器中获取对应用程序委托的引用,然后访问其数组。可以这样做:

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,只需创建一个属性来访问您的ViewController,就像这样,在您的AppDelegate类中:

#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 回答