2013-05-26 47 views
0

我在使用應用程序委託中的NSmutable數組存儲和訪問對象時遇到了問題。我嘗試過從其他網站和堆疊疊加頁面的方法,但還沒有解決方案。我想能夠訪問另一個視圖中的數組數據。目前沒有任何工作適合我。如何將對象存儲到應用程序委託中的NSmutablearray中?

繼承人我的代碼。

AppDelegate.h : 


@interface AppDelegate : UIResponder <UIApplicationDelegate> 
{ 
    NSMutableArray* sharedArray; 
} 

@property (nonatomic, retain) NSMutableArray* sharedArray; 


ViewController.h : 


#import "AppDelegate.h" 

-(void)viewDidLoad{ 

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
      NSMutableArray *model = appDelegate.sharedArray; 

      NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
      [dict setObject:@"hello" forKey:@"title"]; 

      [dict setObject:@"urlhere" forKey:@"thumbnail"]; 


      [model addObject:dict]; 


      NSLog(@"submitted to array: %@",model); 

} 
+0

我的猜測是你永遠不會創建數組。 –

回答

1

你在任何時候初始化sharedArray?在向其添加對象之前,必須先實例化該數組。例如:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 

    self.sharedArray = [NSMutableArray array]; 

    return YES; 
} 

已經這樣做了,現在會嘗試將對象從您的視圖控制器添加到該數組應該會成功。


無關,但你應該您的屬性定義實例變量。讓編譯器合成,對於你,例如:

AppDelegate.h:

@interface AppDelegate : UIResponder <UIApplicationDelegate> 
// { 
//  NSMutableArray* sharedArray; 
// } 

@property (nonatomic, retain) NSMutableArray* sharedArray; 

@end 

你有什麼是技術上可以接受的,但它是因爲這個sharedArray實例變量和什麼編譯器會之間可能的混淆不可取爲您合成(例如,如果您沒有@synthesize行,編譯器會自動爲您創建一個名爲_sharedArray的實例變量,帶有前導下劃線)。即使你有一個確保實例變量是正確的@synthesize行,顯式聲明的實例變量也是多餘的。

+0

所以在應用程序委託中,我只添加self.sharedArray = [NSMutableArray array];是對的嗎? – ASH

+0

@AlexH - 不,你*明白爲什麼你應該*添加該聲明或它是等同的。然後做你應該做的。 –

+0

好吧我得到它的工作。謝謝。 – ASH

相關問題