嗯,我有两个变量,一个NSString和一个NSMutable数组,这是我希望在所有选项卡中都是全局的值。到目前为止,我只有一个(NSString),我可以正常得到它的值。不,我尝试了另外一个变量我得到(null)值。
这是我的代码:
AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic,retain) NSString *myDate;
@property (nonatomic,copy) NSMutableArray *tracks_condition;
@end
并在HomeView.m中分配值
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
parsed_date=[res objectForKey:@"date"];
NSLog(@"Date:%@",parsed_date);
delegate.myDate = parsed_date;
NSString *parsed_track=[res objectForKey:@"Data1"];
[delegate.tracks_condition addObject:parsed_track];
NSLog(@"Track 0 Static:%@",parsed_track);
NSLog(@"Track 0:%@",[delegate.tracks_condition objectAtIndex:0]);
parsed_date正常打印出来,我可以在其他标签中访问它。
但我明白了: 轨道0静态:0 第0轨:( null)
我无法理解为什么,因为我将其添加为MutableArray中的对象。当然,我在每个其他标签中都得到(null)。
你能帮帮我吗?我更喜欢通过修复代码而不是建议完全不同的东西,因为我在IOS方面不是很有经验。除非那么容易。答案 0 :(得分:1)
这很可能是因为您永远不会为tracks_condition
属性实例化可变数组。只是在AppDelegate类上声明属性不会为您创建对象。在使用它之前,您仍需要在某个时刻分配/初始化对象。在此之前,tracks_condition保持为null,并且将忽略发送给它的任何消息(例如尝试将对象添加到数组中)。
您可以通过在使用对象之前实例化对象并设置属性值来解决此问题。您可以在应用代理application:didFinishLaunchingWithOptions:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.tracks_condition = [[NSMutableArray alloc] init];
}