2013-08-04 2 views
-1

나는 가변 배열을 가지고 있으며 일부 문자열로 채 웁니다. 그러나 뷰 (탐색 컨트롤러)를 종료하고 다시 열면 Array는 비어 있습니다. 보기를 나가면 매번 배열이 비게됩니다.NSMutableArray가 비워진 후 비어 있음.

if([name_Recipe isEqualToString:@""]) 
{ 
    NSLog(@"Nothing"); 
} 
else 
{ 
    [favoritesArrayDetail addObject:name_Recipe]; 
    NSLog(@"%@", [NSString stringWithFormat:@"%@", favoritesArrayDetail]); 
} 
+0

어떤 방법으로 뷰를 떠나에서? 이전보기로 돌아가서 다음보기로 이동 하시겠습니까? –

+0

'else'블록에서 배열에서 문자열을 만드는 이유는 무엇입니까? 배열을 출력하려면'NSLog (@ "Favourites Array : % @", favoritesArrayDetail)'가 작동 할 것입니다. –

+0

@MikeD 감사. 예, 이전으로 돌아갑니다. 내 Tabbar로보기를 전환 할 때 비워지지 않습니다. 내 탐색 표시 줄에 "뒤로"버튼을두면됩니다. –

답변

0

보기를 나가면 뷰 컨트롤러가 모든 멤버 변수와 함께 해제되기 때문입니다. 배열에 계속 액세스하려면 다른 위치에서 선언하거나 정적으로 만들어야합니다.

EDIT :보기로 돌아갈 때마다 viewDidLoad가 호출되기 때문에 [NSMutableArray new] 때문에 배열을 빈 것으로 다시 설정합니다. 배열이 아직 생성되지 않은 경우에만 해당 코드 행을 호출하려고합니다.

예를 들어, 당신은 할 수 :

if (!favoritesArrayDetail) //Only do this code if the array is nil. 
    favoritesArrayDetail = [NSMutableArray new]; 
+0

좋은 생각이지만, 내가 이것을 할 때, 똑같은 문제입니다. 배열은 어쨌든 empied 가져옵니다. –

+0

뷰가 생성 될 때'favoritesArrayDetail = [[NSMutableArray alloc] init]'을 뷰의 init이나 didLoad/appear 또는 다른 곳에서하고 있습니까? 만약 그렇다면 배열을 삭제하는 것이고 배열이 생성되지 않았다면 그것을 수행하기를 원합니다 :'if (! favoritesArrayDetail)' – Jsdodgers

+0

이제 m 파일에'static NSMutableArray * favoritesArrayDetail; 배열에 속성을 가지기는했지만 둘 다 사용하기 전에는 작동하지 않습니다. –

0

는 속성으로 배열을 선언합니다.

@property (nonatomic, copy) NSMutableArray *favoritesArrayDetail;

그리고있는 viewDidLoad에서

:

if (!favoritesArrayDetail) 
{ 
    favoritesArrayDetail = [NSMutableArray new]; 
} 
+0

전에이 작업을했는데 작동하지 않았습니다. –

+0

질문을 업데이트하고 전체 컨트롤러 클래스를 게시하면 깨진 코드를 게시하지 않으면 도움이 될 방법이 없습니다. – alexhajdu