2013-03-11 7 views
0

코코아 바인딩, NSArrayController 및 핵심 데이터를 사용하고 있습니다. 그냥 시작 후, 응용 프로그램이 첫 번째 항목을 얻을 수있다, 난이 아래 applicationDidFinishLaunching에서 시도 :NSArrayController + 코코아 바인딩 + 코어 데이터 : 애플리케이션에서 선택된 행 가져 오기

1. Entity *ent = arrayManager.arrangedObjects[0]; 

2. Entity *ent = arrayManager.selectedObjects[0]; 

---> 오류가 배열이 비어 있다는 말. 왜 ? 난 이해가 안

다른 점은 응용 프로그램이 나타날 때있는 tableView에서 선택된 행이 있다고하지만, 내가 로그인 할 때이 :

NSLog(@"selected row in applicationDidFinishLaunching = %li",self.TableViewController.tableView.selectedRow); 

log: -1 -> 더 행을 선택하지! 왜 ?

+0

그래서'arrangedObjects'는 결과를 반환하지만'selectedObjects'는 반환하지 않습니까? – paulmelnikow

+0

둘 다 비어 있지 않습니다. –

답변

3

엔티티를 보려면 applicationDidFinishLaunching:에있는 ArrayController에서 가져 오기를 수행해야합니다. ArrayController에서 무엇이든 접근하기 전에이 작업을 시도하십시오 :

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    NSError *error; 
    [arrayManager fetchWithRequest:nil merge:NO error:&error]; 
    Entity *ent = arrayManager.arrangedObjects[0]; 
} 
+0

그 작품이 고맙습니다. 왜 일자리를 요구하지 않겠습니까? –

+1

물론입니다. NSArrayController의 기본 요청은 nil을 전달하는 것만 큼 알 수 있습니다. 나는 틀릴 수도 있지만, 그것은 그것이 다른 곳에서로드 될 때하는 기본 요청을하도록 만드는 것입니다. 또한 기술적으로 요청을 처리 할 때 오류 처리를 수행해야합니다. fetchWithRequest : merge : 오류는 BOOL을 반환합니다. – macandyp

+0

자세한 내용은 문서를 확인하겠습니다. 감사합니다. –

관련 문제