我已经设置了一个基本应用程序,它可以下拉JSON流并在两个视图控制器中显示信息。我主要使用基于根控制器的存储阵列,虽然工作不是最佳实践。我决定将数据模型移动到一个单独的类中,然后在app delegate中分配(我可以使用单例,但应用程序是基本的,我只是在学习)。
所以国家级是
@interface Country : NSObject {
NSString *countryName;
NSString *countryDetail;
NSMutableArray *countryList;
UIImage *countryFlag;
}
@property (nonatomic, retain) NSString *countryName;
@property (nonatomic, retain) NSString *countryDetail;
@property (nonatomic, retain) UIImage *countryFlag;
@property (nonatomic, retain) NSMutableArray *countryList;
并且每个属性都在.m
中合成在appdelegate .h
@class RootController;
@class Country;
@interface FO_InfoAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UINavigationController *navController;
RootController *viewController;
Country *myCountry;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootController *viewController;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@property (nonatomic,retain) Country *myCountry;
然后在.m
#import "Country.h"
@synthesize myCountry;
myCountry = [[Country alloc] init];
然后使用#define
在所需的类中共享Global #define FOAppDelegate ((FO_InfoAppDelegate *)[[UIApplication sharedApplication] delegate])
我有两个解析类来处理两个不同的url json提要。相同来源的不同数据。
我的原始配置我在parseclass.h中有一个从rootcontroller调用的方法。
- (void)querycountrieslistwithViewCont:(UIViewController *)controller;
然后在实现中我做了一些JSON的解析并将数据传递给最初在根控制器中声明和分配的NSmuteablearray 这就是它的工作方式。结果数组输入UITableview
NSArray *countries = [jparser objectWithString:fco_content error:&error];
for (NSDictionary *country in countries) {
[viewController.countryName addObject:[country valueForKeyPath:@"country.slug"]]
现在在我使用datamodel的新设计中,我希望parse类将信息存储在country类中,所以我将最后一行更改为:
[FOAppDelegate.myCountry.countryList addObject:[country valueForKeyPath:@"country.slug"]];
这导致数组被列为null!?它们都是NSMuteablearray,只是从不同的地方访问过。我有点困惑!
答案 0 :(得分:0)
记录日志,找出失败时出现的问题。
就在这一行之前:
[FOAppDelegate.myCountry.countryList addObject:[country valueForKeyPath:@"country.slug"]];
插入此内容:
NSLog(@" FOAppDelegate.myCountry = %@", FOAppDelegate.myCountry);
NSLog(@" FOAppDelegate.myCountry.countryList = %@", FOAppDelegate.myCountry.countryList);
NSLog(@" country = %@", country);
NSLog(@" country's valueForKeyPath = %@", [country valueForKeyPath:@"country.slug"]);
然后运行它,检查控制台,并查找不应该为零的内容。
你的问题可能只是你没有分配并初始化你的countryList NSMutableArray。