2010-12-01 2 views
0

나는 UIDatePicker에서 텍스트와 날짜를 저장 한 다음 그 날짜를 UIDatePicker에 다시 기록한 경우 해당 메모를 표시하는 앱을 가지고 있습니다.DatePicker CoreData 작업 중지

훌륭한 작품입니다! 오직 UIDatePicker 날짜를 오늘 설정하면 CoreData가 작동하지 않는다는 것을 발견했습니다!

이 setDate 행을 실행할 때만 핵심 데이터가 작동하지 않습니다. 응용 프로그램이 충돌하지 않고 잘 실행, 그냥 어떤 데이터를 저장하지 않습니다. 내가 그 라인을 언급하면 ​​그 작품은 매력이있다. 하지만 오늘 앱이로드 될 때 UIDatePicker가 있어야합니다.

NSDate *now = [[NSDate alloc] init]; 
[datePicker setDate:now]; 

는 메모 가져 :

NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; 
     NSEntityDescription *testEntity = [NSEntityDescription entityForName:@"DatedText" inManagedObjectContext:self.managedObjectContext]; 
     [fetch setEntity:testEntity]; 
     NSPredicate *pred = [NSPredicate predicateWithFormat:@"dateSaved == %@", datePicker.date]; 
     [fetch setPredicate:pred]; 

     NSError *fetchError = nil; 
     NSArray *fetchedObjs = [self.managedObjectContext executeFetchRequest:fetch error:&fetchError]; 
     if (fetchError != nil) { 
      NSLog(@"fetchError = %@, details = %@",fetchError,fetchError.userInfo); 
     } 
     noteTextView.text = [[fetchedObjs objectAtIndex:0] valueForKey:@"savedText"]; 

을 그리고이 노트에 저장하기 :

NSManagedObject *newDatedText; 
    newDatedText = [NSEntityDescription insertNewObjectForEntityForName:@"DatedText" inManagedObjectContext:self.managedObjectContext]; 
    [newDatedText setValue:noteTextView.text forKey:@"savedText"]; 
    [newDatedText setValue:datePicker.date forKey:@"dateSaved"]; 

    NSError *saveError = nil; 
    [self.managedObjectContext save:&saveError]; 
    if (saveError != nil) { 
     NSLog(@"[%@ saveContext] Error saving context: Error = %@, details = %@",[self class], saveError,saveError.userInfo); 
    } 
+0

게시 한 마지막 몇 줄의 코드는 저장할 수없는 경우 -save : 메서드가 오류를 다시 전달함을 보여줍니다. 오류가 보이십니까? 그렇다면, * 그것은 무엇입니까? 오류가 없다면 어떻게 저장하지 않을 것이라고 확신합니까? 정확히 어떻게 * 당신이 이것을 확인하고 있습니까? 또한 앱 시작시 첫 번째 코드 블록이 NSDate 인스턴스를 누출하는 것으로 보입니다./init을 해제하지 않고 할당합니다. 자동 완성 된 인스턴스를 반환하려면 [NSDate date]를 시도하거나 완료하면 날짜 선택기로 가져온 후 풀어 놓으십시오. –

답변

2

NSDate는 DD/MM/YYYY뿐만 아니라 HH : MM : SS도 저장합니다.

선택기에서 DD/MM/YYYY를 선택하면 기본 시간은 0:00:00으로 저장되지만 위의 경우에는 선택기 날짜를 지금 설정하면 실제로는 HH : MM : SS를 다른 것으로 조작합니다 (수동으로는 보이지 않지만).

내가 말하고자하는 것을 설명하기 위해 가져올 때 (dateSaved == picker.date) 조건자를 사용하면 DD/MM/YYYY 00:00:00 형식의 날짜를 찾고 인수를 위해 DD/MM/YYYY 09:00:01에 저장할 수 있습니다.

이 기능을 사용하려면 NSDate 속성의 형식을 지정해야합니다.

+0

그래서 포맷을해야하므로 NSDateFormatter를 DD/MM/YYYY 00:00:00,하지만 시간을 제로로 유지하는 방법은 무엇입니까? –

+0

시간을 강제로 0으로 만드는 동안 NSDate를 만드는 방법은 무엇입니까? 그게 당신이 의미 한 것입니까? –

0

날짜 선택기는 기본적으로입니다 응용 프로그램이 시작될 때

나는 이것을 사용 오늘 날짜 만 설정하십시오. 수동으로하지 않아도됩니다.

+0

아니요. 인터페이스 빌더에 하나 있고 그것이 시작 날짜와 시간을 설정하는 속성에 속성이 있습니다. 슬프게도 오늘 날짜 자동 옵션이 ​​없습니다. –

+2

Apple docs 인용 : "기본값은 UIDatePicker 객체가 생성 된 날짜입니다." http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDatePicker_Class/Reference/UIDatePicker.html –