2010-05-10 5 views
0

이것은 Core Data를 사용한 첫 번째 프로젝트입니다. Apple의 이벤트 튜토리얼을 따라 iPhone의 기본 데이터를 이해하는 데 도움이되었습니다.iPhone 코어 데이터 문제

그러나 이제는 내 프로젝트를 진행하면서 데이터베이스에 데이터를 추가하는 데 문제가 있습니다.

개체를 만들고 데이터를 설정할 때 다시 가져 오려고하면 시스템에서 이상한 문자 시퀀스를 반환합니다.

2010-05-11 00:16:43.523 FG[2665:207] Package: ‡}00å 
2010-05-11 00:16:43.525 FG[2665:207] Package: ‡}00å 
2010-05-11 00:16:43.526 FG[2665:207] Package: ‡}00å 
2010-05-11 00:16:43.527 FG[2665:207] Package: ‡}00å 
2010-05-11 00:16:43.527 FG[2665:207] Package: ‡}00å 
2010-05-11 00:16:43.527 FG[2665:207] Items: 5 

이 문제의 어떤 종류이 될 수있다 :

이것은 내가 그것을 기록하려고하면 내가 로그에서 볼 무엇인가?

편집 :이 오류를 생성하는 코드의 일부가

입니다 :

package = (Package *)[NSEntityDescription insertNewObjectForEntityForName:@"Package" inManagedObjectContext:moc]; 

    theNodes = [doc nodesForXPath:@"//pack" error:&error]; 
    for (CXMLElement *theElement in theNodes) 
    {  
     // Create a counter variable as type "int" 
     int counter; 

     // Loop through the children of the current node 
     for(counter = 0; counter < [theElement childCount]; counter++) { 

      if([[[theElement childAtIndex:counter] name] isEqualToString: @"id"]) 
       [package setIdPackage:[[theElement childAtIndex:counter] stringValue]]; 
      if([[[theElement childAtIndex:counter] name] isEqualToString: @"title"]) 
       [package setPackageTitle:[[theElement childAtIndex:counter] stringValue]]; 
      if([[[theElement childAtIndex:counter] name] isEqualToString: @"category"]) 
       [package setCategory:[[theElement childAtIndex:counter] stringValue]]; 
      if([[[theElement childAtIndex:counter] name] isEqualToString: @"lang"]) 
       [package setLang:[[theElement childAtIndex:counter] stringValue]]; 
      if([[[theElement childAtIndex:counter] name] isEqualToString: @"number"]) { 
       NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
       [f setNumberStyle:NSNumberFormatterDecimalStyle]; 
       NSNumber * myNumber = [f numberFromString:[[theElement childAtIndex:counter] stringValue]]; 
       [f release];     
       [package setNumber:myNumber]; 
      } 

     } 

    } 

    NSLog([NSString stringWithFormat:@"=== %s ===\nID: %s\nCategory: %s\nLanguage: %s",[package packageTitle], [package idPackage] ,[package category],[package lang]]); 
+1

코드를 게시 할 때까지 알 수 없습니다. 그래도 인코딩 문제처럼 보입니다. – Jordan

+0

정보가 충분하지 않아서 무엇을하고 있는지, 누군가 도움을 줄 수 있는지에 대해 좀 더 자세하게 설명하십시오. –

+0

예, 문제를 생성하는 코드 부분을 추가했습니다. – bontoJR

답변

1
당신은,이 코어 데이터 객체를 허용하는 대신 %의 당신의 NSLog 형식의 %에 @를 사용한다

속성이 제대로 표시됩니다 (% @는 모든 내장 NSObject 클래스를 거의 표시 할 수 있습니다).

+0

어리석은 오류 ... 네가 맞습니다! 감사! – bontoJR

0

코드의 또 다른 팁 :

package = (Package *)[NSEntityDescription insertNewObjectForEntityForName:@"Package" inManagedObjectContext:moc]; 

는 완전히 불필요한 캐스트입니다. -[NSEntityDescription insertNewObjectForEntityForName: inManagedObjectContext:은 일반 포인터 인 id을 반환합니다. 이제까지 id을 쓸 필요가 없습니다. 이 줄을 읽어야합니다 :

package = [NSEntityDescription insertNewObjectForEntityForName:@"Package" inManagedObjectContext:moc]; 
관련 문제