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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Swift

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

Swift 2

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

Q&A

解決済

1回答

2260閲覧

独自クラスで指定したデータをJSONに格納するには。

Shinog

総合スコア99

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Swift

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

Swift 2

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

0グッド

0クリップ

投稿2016/08/03 02:41

編集2016/08/03 03:55

お世話になっております。

現在、シンプルなToDoアプリの実装を試みております。
その設計方法として、まずToDo一つひとつを「タスク」と命名し、その上でタスクの中身をクラスで指定し、TaskListクラスでCRUD(今回はタスクの生成、読み取り、編集、削除)機能を担うようにしたいと考えています。

swift

1class Task { 2 let id: Int 3 var order: Int //orderは順番 4 var content: String 5 init(id: Int, order: Int, content: String) { 6 self.id = id; self.order = order; self.content = content 7 } 8} 9 10class TaskList { 11 var tasklist: [Task] = [Task(id: 1, order: 1, content: "本屋に行く"), Task(id: 2, order: 2, content: "CD屋に行く")] 12 13 func read() { 14 ~省略~ 15 } 16 17 func add(content: String) { 18 ~省略~ 19 } 20 21 func edit(content: String, order: Int) { 22 ~省略~ 23 } 24 25 func delete(order: Int) { 26 ~省略~ 27 } 28} 29

そういった中で、タスクを永続化するべく一度タスクリスト(タスクが集まったデータ群)をJSONに落とし込む必要があるのですが、Taskクラスで指定したデータをJSONに変換できずに困っています。

このような場合、どのように対処を行えば良いでしょうか?
何か少しでもお分かりの方がいらっしゃいましたら、ぜひともご教示のほどよろしくお願いします。
※今回はSwiftyJsonを使用

swift

1var json_task = JSON(arrayLiteral: TaskList().tasklist) 2//print(json_task)の出力結果↓ 3unkwown //出力が失敗する(MvcUnderstandはプロジェクト名) 4 5var json = JSON(arrayLiteral: [Task(id: 1, order: 1, content: "本屋に行く"), Task(id: 2, order: 2, content: "CD屋に行く")]) 6//print(json)の出力結果↓ 7[ //期待している出力結果 8 { 9 "id" : 1, 10 "order" : 1, 11 "content" : "本屋に行く" 12 }, 13 { 14 "id" : 2, 15 "order" : 2, 16 "content" : "CD屋に行く" 17 }, 18] 19 20//以下補足 21print(TaskList().tasklist) 22[MvcUnderstand.Task, MvcUnderstand.Task] //出力結果 23 24print(TaskList().tasklist) 25Array<Task> //出力結果 26

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問ですが、JSONに変換して保存する理由には何かの意図があるのでしょうか?
簡単に実装するのであればRealmなどのDatabaseを使用するほうが良いと思いますが、、、

その他にも永続化する方法はいろいろあるので、特別な理由がないのであれば以下のサイトなどを参考に考えてみてはいかがでしょうか。(Objective-Cの説明ですがswiftでも同じことはできます)

参考URL: iOS開発でデータの保存をする


独自クラスをNSUserDefaultsに保存する方法参考

NSUserDefaultsに自作クラスを保持(swift)
NSObjectを継承した独自クラスをNSUserDefaultsに保存する[Swift]

投稿2016/08/03 04:04

編集2016/08/03 04:24
_Kentarou

総合スコア8490

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

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

Shinog

2016/08/03 04:14

ご質問いただき、ありがとうございます! 今回はNSUserDefaultsを用いて永続化を図る方針で、そのため一度JSONをかませるよう指示を受けているんです...汗
_Kentarou

2016/08/03 04:24

独自クラスをNSUserDefaultsに保存する方法の参考URLを回答に追記しました、参考にしてみてください。
Shinog

2016/08/03 14:20

ご回答ありがとうございます。 上記記事を参考にして、無事独自クラスによるデータとuserdefaultsとの連携が図れました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問