所以我在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);
答案 0 :(得分:2)
如果不了解应用程序的结构,很难说如何做到这一点。如果您可以从应用程序委托访问该视图控制器,则可以将指向该数组的指针传递给视图控制器。另一种方法是在视图控制器中获取对app delegate的引用,然后访问其数组。这可以这样做:
AppDelegate *appDel = [UIApplication shared application].delegate;
NSArray *myControllerArray = appDel.featured;
您需要将应用委托导入控制器的.m文件才能使用此方法。
答案 1 :(得分:2)
以下是如何从viewcontroller访问存储在app delegate中的数据的方法。
您无需在viewcontroller中合成对象。只需导入您的appdelegate文件,并在必要时复制以下代码。
NSMutableArray * nArray =[ (AppDelegate*) [[UIApplication sharedApplication] delegate] featured];
上面的代码为您提供了app delegate所需的数组。现在您可以使用nArray对象在控制台中显示详细信息。
NSLog(@"%@",nArray.description);
答案 2 :(得分:2)
由于你已经在appDelegate.h中声明了一个属性,你可以在另一个viewController中访问它,如下所示:
#import "appDelegate.h"
您可以使用以下内容访问该值:
((AppDelegate *)[[UIApplication sharedApplication]delegate]).featured
答案 3 :(得分:1)
如果您需要通过NSArray
访问任何课程中的AppDelegate
或任何其他对象,只需在{{1}中创建一个属性即可访问ViewController
AppDelegate
class:
#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上的任何值。 我希望能帮助你。