2009-12-09 3 views
0

나는 coredata를 사용하여 데이터를 삽입 할 때마다 모든 것이 잘 진행된다고하는 문제가 있습니다. 그러나 검색하는 동안, 나는 항상 동일한 객체를 가져오고 있습니다. ID, 이름, 주소 등의 여러 속성을 가진 액터의 객체를 삽입하는 중입니다. 삽입 된 모든 것을 볼 수 있습니다. 실제로는 XML 파일에서 가져옵니다. 내 설정 방법 등이있다 =coredata의 문제

[poi setActorCity:[NSString stringWithFormat:@"%@",[poi1 objectAtIndex:j]]]; 

경우, POI 내 managedObjectClass POI1의 개체입니다. 그게 문제 야? & j 인덱스는 단순히 poi1 배열의 xml 값을 추적하기위한 것입니다. 도와주세요 ...

  • (무효) addEvent {

[actorsArray removeAllObjects]

NSEntityDescription * entity1 = [NSEntityDescription entityForName : @ "POI1 inManagedObjectContext : self.managedObjectContext];

POI1 * (POI1 *) [NSEntityDescription insertNewObjectForEntityForName : @ "POI1"inManagedObjectContext : managedObjectContext];

for(NSInteger i=0;i<[Actors count];i++) 
{ 
    NSMutableArray *poi1=[[NSMutableArray alloc]init]; 
    poi1=[Actors objectAtIndex:i]; 
    for(int j=0;j<[poi1 count];j++) 
    { 
     if(j==1) 
     { 
      [poi setActorName:[NSString stringWithFormat:@"%@",[poi1 objectAtIndex:j]]]; 

     } //Like this it inserts for every attribute 
      } 
    [actorsArray insertObject:poi atIndex:i];  
    [poi release]; 
} 
[self saveAction]; //saving the managedObjectContext 

}

이 '내 가져 오는 방법 ...

- (무효)가 을 fetchResult {

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

NSEntityDescription * entity1 = [NSEntityDescription entityForName "POI1"@ inManagedObjectContext : self.managedObjectContext];

[fetchRequest setEntity : entity1];

NSArray *items = [self.managedObjectContext 
       executeFetchRequest:fetchRequest error:&error]; 

for(NSInteger k=0;k<[items count];k++) 
{ 
    POI1 *_poi=[[POI1 alloc]init]; 
     _poi = [items objectAtIndex:k]; 
     NSString *str=[NSString stringWithFormat:@"%@",[_poi actorName]]; //This' for testing... Shows me same name every time.., 
} 

[fetchRequest release];  

}

+0

안녕하세요, 선 앞에 4 칸을 추가하면 코드로 서식이 지정됩니다. . . – deanWombourne

+0

문제에 대한 추가 정보가 필요합니다. poi 객체를 만드는 루프를 우리에게 보여줄 수 있습니까? 저는 빈센트가 올바른 방향에 있을지 모르지만 확신 할 수있는 더 많은 코드가 필요하다고 생각합니다. – deanWombourne

+0

두 개의 동일한 질문을 하나에 병합했습니다. 복제물을 게시하지 마십시오. 더 많은 사람들이 귀하의 질문을 보길 원하면 새로운 정보를 추가하고 직면 한 문제에 대한 세부 정보를 추가하여 원본을 편집 할 수 있습니다. –

답변

0

가져 오기에 문제가있는 것 같습니다. 당신의 술어를 확인하십시오. 동일한 오브젝트를 리턴하는 경우 가장 큰 원인은 술어가 하나의 오브젝트 만 찾도록 작성된다는 것입니다.

Edit01는 :라는 클래스 'NSEntityDescription은'이 방법은 관리되는 개체의 인스턴스를 반환 있다는 사실에도 불구하고

POI1 *poi = (POI1 *)[NSEntityDescription insertNewObjectForEntityForName:@"POI1" inManagedObjectContext:managedObjectContext]; 

:

이 줄은 당신의 문제입니다. 지금은 하나의 POI1 인스턴스를 만든 다음 다른 속성을 계속 할당합니다. 하나의 객체 만 생성하고 채우고 저장 했으므로 동일한 값을 볼 수 있습니다.

루프 내부 객체 생성 이동

다음 Actors 어레이의 각 요소의 데이터를 포함하는 대응 POI1 인스턴스가되도록

for(NSInteger i=0;i<[Actors count];i++) 
{ 
     POI1 *poi = (POI1 *)[NSEntityDescription insertNewObjectForEntityForName:@"POI1" inManagedObjectContext:managedObjectContext]; 
     NSMutableArray *poi1=[[NSMutableArray alloc]init]; 
     poi1=[Actors objectAtIndex:i]; 
     for(int j=0;j<[poi1 count];j++) 
     { 
       if(j==1) 
       { 
         [poi setActorName:[NSString stringWithFormat:@"%@",[poi1 objectAtIndex:j]]]; 

       } //Like this it inserts for every attribute 
         } 
     [actorsArray insertObject:poi atIndex:i];    
     [poi release]; 
} 

이것은 각 패스에서 새로운 POI1를 생성한다.

+0

제 편집 된 질문을 확인하십시오, 선생님 ... 감사합니다 ... – neha

+0

Dat 's great! 그것은 일했습니다 ... 정말 고마워요! – neha

+0

내 답변 옆에있는 체크 표시를 눌러 모두가 질문 된 답변을 알 수 있도록하십시오. – TechZen

0

이 정보를 정확하게 대답하기 조금 어려운,하지만 내 추측은 새로운 POI 예를 매번 생성하고 배열에 같은 기준을 계속 추가하지 않는 것이 될 것이다.

+0

선생님, 제 질문을 수정하고 자세한 코드를 제공했습니다. 제발 좀 봐 ... 미리 감사드립니다 ... – neha

0

각 삽입 이후에 모든 삽입 작업을 수행 한 후에 managedObjectContext를 저장해야합니다. 그렇지 않으면 정보가 임시 메모리를 떠나지 않습니다.

+0

저장 중입니다. 선생님 ... 내 기본 질문을 확인해주세요. 추가 및 가져 오기 방법으로 수정했습니다. 미리 감사드립니다 ... – neha