2013-05-26 5 views
0

응용 프로그램 대리인의 NSmutable 배열을 사용하여 객체를 저장하고 액세스하는 데 문제가 있습니다. 나는 다른 웹 사이트 양식과 오버레이 페이지 스택을 시도했지만 아직 해결 방법이 없습니다. 다른보기에서 배열 데이터에 액세스 할 수 싶습니다. 현재 나를 위해 일하는 것은 없습니다.NSmutablearray에 객체를 저장하는 방법

Heres my code.

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을 초기화 하시겠습니까? 배열에 객체를 추가하려면 먼저 배열을 인스턴스화해야합니다. 예를 들어 :

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

    self.sharedArray = [NSMutableArray array]; 

    return YES; 
} 

가 다 끝나면

AppDelegate.m, 이제 성공합니다 뷰 컨트롤러에서이 배열에 개체를 추가하려고 시도합니다.


관련없는,하지만 당신은 당신의 재산에 대한 인스턴스 변수를 정의하지한다. 컴파일러는 합성 보자 당신을 위해, 예를 들면 :

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

관련 문제