2015-07-13 4 views
-1

Я пытаюсь сохранить дату в текстовое поле и сохранить это в CoreData. У меня есть текстовое поле и я могу использовать сборщик дат только с NSDateFormatter, но у меня возникают проблемы с его сохранением в текстовое поле в CoreData.Не удается сохранить дату в CoreData

Пожалуйста, найдите код здесь - http://paste.ofcode.org/gAMBXuBksY3SqzKfQtvCqd

Любая помощь приветствуется

Благодаря

+0

1. Идея: передать ошибку, чтобы сохранить и посмотреть на то, что он говорит –

+0

2. мысль: вы знаете, что спасает это не удается? возможно, чтение не выполнено –

+0

Я получаю следующие ошибки: 1. TextFieldDDate.NSDate = date (UITextField не имеет члена с именем NSDate) 2. newItem.ddate = textFieldDDate.text (Невозможно присвоить значение типа String значению типа NSDate) I знаю, что мне не хватает чего-то, чтобы очистить их, но не могу понять, что это такое. – Scubadivingfool

ответ

1
extension NSDate{ 
    var stringValue: String{ 
     return self.toString() 
    } 

    func toString() -> String { 
     let formatter = NSDateFormatter() 
     formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
     let str = formatter.stringFromDate(self) 
     return str 
    } 
} 

extension String{ 
     var dateValue: NSDate?{ 
      return self.toDate() 
     } 

     func toDate() -> NSDate? { 
      let formatter = NSDateFormatter() 
      formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
      if let date = formatter.dateFromString(self) { 
       return date 
      }else{ 
       // if format failed, Put some code here 
       return nil // an example 
      } 
     } 
    } 

добавить это Befor вашего класса или другого быстрого файла, затем измените textFieldDDate.NSDate = ddate на:

textFieldDDate.text = ddate.stringValue 

вы можете использовать только текст (String!) С UITextField, а также только NSDate в вашем файле newItem.ddate.

изменение newItem.ddate = textFieldDDate.text в

newItem.ddate = textFieldDDate.text.dateValue 
+0

Хорошо, что исправлена ​​одна проблема, но у меня все еще есть еще одна. newItem.ddate = textFieldDDate.text. Невозможно присвоить тип значения String значению типа NSDate. – Scubadivingfool

+0

Я редактирую ответ, добавляю некоторые строки для исправления. Вы можете указать только правильный тип значения. String to String, NSDate to NSDate, если не то же самое, вам нужно изменить его – Lyuzonggui

+0

ОК, это сработало, но теперь в моем представлении таблицы у меня есть еще одна проблема, просто добавлена ​​она в ответ «Ответ на свой вопрос – Scubadivingfool

1

var ddate = data.valueForKey("ddate") Я вижу, я думаю, это тип NSDate? возможно, вам нужно изменить его на String, это не может быть просто использование as!(?) String, если я прав, вам нужно использовать мой код extension NSDate {}, чтобы изменить его.

+0

Да, дата имеет тип NSDate Просто не уверен, где его изменить – Scubadivingfool

+0

перед 'cell.detailTextLabel! .text =" \ (ddate) location: \ (diveloc) "' – Lyuzonggui

+0

oh crap, приложение сбой во время сохранения даты. – Scubadivingfool

1

Я проверил свои коды, просто найти несколько строк, может быть, это сохранить данные CoreData:

if segue.identifier == "update" { 

     var selectedItem: NSManagedObject = myDivelog[self.tableView.indexPathForSelectedRow()!.row] as! NSManagedObject 

     let ADLVC: AddDiveLogViewController = segue.destinationViewController as! AddDiveLogViewController 

     ADLVC.divenumber = selectedItem.valueForKey("divenumber") as! String 
     ADLVC.ddate = selectedItem.valueForKey("ddate") as! NSDate 
     ADLVC.divelocation = selectedItem.valueForKey("divelocation") as! String 
     ADLVC.existingItem = selectedItem 

     } 

я прав? Я получаю эту ссылку ответа о том, как сохранить данные в CoreData для вас. потому что, может быть, что-то не так.

здесь https://stackoverflow.com/a/26025022/5113355

+0

Извините, не уверен, что вы имеете в виду – Scubadivingfool

+0

Я имею в виду, может быть, что-то не так в том, как сохранить дату. – Lyuzonggui

+0

Ну, он отлично работал до внесения изменений в NSDate – Scubadivingfool

Смежные вопросы