質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

1625閲覧

Swift 現在時間をコアデータに表示させたい。

KokokaraYoshiki

総合スコア27

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2017/07/04 00:12

###前提・実現したいこと
日記アプリを作成していてタイトル、詳細と一緒に現在時間も表示したい。
###エラー
Use of unresolved identifier 'timeDeta'
未解決の識別子の使用「timeDeta」

タイトルと詳細はカスタムセルを利用しTableViewに文字を出すことができたのですが現在時間の保存方法がわかりません。

###データを入力し保存する場所

// プロパティ @IBOutlet weak var textField: UITextField! @IBOutlet weak var textView: UITextView! @IBOutlet weak var imageView: UIImageView! //表示文字の変更 @IBOutlet weak var mytitle: UILabel! @IBOutlet weak var mydetail: UILabel! let now = Date() // ボタンが押された時の処置 @IBAction func addBtn(_ sender: UIButton) { // TextFieldに何も入力されていない場合は何もせずに1つ目のビューへ戻ります。 let myTitle = textField.text! as String let myDetail = textView.text! as String print(myTitle) print(myDetail) if myTitle == "" || myTitle == nil { // dismiss(animated: true, completion: nil) mytitle.text="内容を入力してください" return }else if myDetail == "" || myDetail == nil { // dismiss(animated: true, completion: nil) mydetail.text="タイトルを入力してください" return } // context(データベースを扱うのに必要)を定義。 let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext // taskにTask(データベースのエンティティです)型オブジェクトを代入します。 let daily = Daily(context: context) // 先ほど定義したTask型データのname、categoryプロパティに入力、選択したデータを代入します。 print("テキストフィールドは\(myTitle)") print("テキストビューは\(myDetail)") daily.dailyTitle = myTitle daily.dailyDetail = myDetail daily.deilyDeta = now as NSDate // 上で作成したデータをデータベースに保存します。 (UIApplication.shared.delegate as! AppDelegate).saveContext() dismiss(animated: true, completion: nil) }

###データの表示場所(TableViewにタイトル、詳細は表示可能)

// データを取ります。 func read(){ // カラの配列を用意します。 myTitle = [] myDetail = [] // AppDelegateを使う準備 let appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate // エンティティを操作するためのオブジェクト let viewContext = appDelegate.persistentContainer.viewContext // どのエンティティからデータを取得してくるか設定 let query: NSFetchRequest<Daily> = Daily.fetchRequest() do{ // データを一括取得 let fetchResults = try viewContext.fetch(query) // データの取得 for result: AnyObject in fetchResults { let title: String! = result.value(forKey: "dailyTitle") as! String let detail: String! = result.value(forKey: "dailyDetail") as! String let time: String! = result.value(forKey: "dailyDeta") as! String // let time: String! = result.value(forKey: "deilyDeta") // print("時間は\(time)") if title == "" || title == nil || detail == "" || detail == nil{ print("空かnilです") }else{ // MARK:ここオプショナルになるなぜ? print("titleは:\(title)detailは:\(detail)") myTitle.append(title!) myDetail.append(detail!) myTime.append(timeDeta!) } } }catch{ } }

###試したこと
CoraDetaに保存する際に as String as NSData とダウンキャストをし保存してデータ表示画面でCoraDetaの取り出し方法がわかりません。
coradetaの中身がNSDeta型でこのNSDetaデータをDetaformatに保存できない。

###補足情報(言語/FW/ツール等のバージョンなど)
Swift3
Xcode 10.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

let deta: NSDate! = result.value(forKey: "goaldeta") as! NSDate let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let detastring:String = formatter.string(from: deta as Date)

表示の際にStringに変換して文字として表示することができました。

投稿2017/07/09 08:17

KokokaraYoshiki

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

NSDateをStringにしたい(&元に戻したい)のであれば、UNIX時間を文字列化するのが簡単だと思います。

swift

1let date = NSDate() 2print(date) 3//=> 2017-07-04 00:50:19 +0000 4 5//String化 6let stringDate = String(date.timeIntervalSince1970) 7print(stringDate) 8//=> 1499129419.03741 9 10//NSDateに戻す 11let dateFromString = Date(timeIntervalSince1970: Double(stringDate) ?? 0) 12print(dateFromString) 13//=> 2017-07-04 00:50:19 +0000

投稿2017/07/04 01:04

編集2017/07/04 01:05
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KokokaraYoshiki

2017/07/04 10:01

NSのデータをcoradetaに保存しString型でTableViewに表示する方法で解消致しました。 ありがとうございました。
fuzzball

2017/07/04 10:06

ちょっと意味がよく分からないのですが、私の回答と違う方法で解決したのであれば、その方法を自分で書いてベストアンサーにして下さい。
KokokaraYoshiki

2017/07/09 08:15

let deta: NSDate! = result.value(forKey: "goaldeta") as! NSDate let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let detastring:String = formatter.string(from: deta as Date) 上記のコメントはNSdeta型のものをStringに変換したというコトです。 表示の際にStringに変換して文字として表示することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問