質問編集履歴

3

NSArray を NSDictionary に変更

2017/07/12 02:39

投稿

harima
harima

スコア17

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- jsonファイルを他のアプリに流用したく色々試しましたが、print文で表示ができるようになったものの、データーの取得ができませんでした。どのようにすれば良いかご教授ください。
1
+ Djsonファイルを他のアプリに流用したく色々試しましたが、print文で表示ができるようになったものの、データーの取得ができませんでした。どのようにすれば良いかご教授ください。
2
2
 
3
3
  ```swift3
4
4
 
@@ -131,3 +131,167 @@
131
131
  }
132
132
 
133
133
  ```
134
+
135
+
136
+
137
+
138
+
139
+ swift3のソースで
140
+
141
+ ```swift
142
+
143
+ do{
144
+
145
+ let jsonArray:NSArray = try JSONSerialization.jsonObject(with: data as Data , options: JSONSerialization.ReadingOptions.mutableContainers) as! NSArray
146
+
147
+ print(jsonArray)
148
+
149
+
150
+
151
+ } catch {
152
+
153
+
154
+
155
+ }
156
+
157
+ ```
158
+
159
+ とすると実行エラーが発生しました。
160
+
161
+ ```
162
+
163
+ Could not cast value of type '__NSDictionaryM' (0x10d5aa2b0) to 'NSArray' (0x10d5a9e28).
164
+
165
+ ```
166
+
167
+
168
+
169
+ でNSArrayをNSDictionaryに変更して実行しますとエラーは発生しないのですが、表示がおかしくなります
170
+
171
+ ```swift
172
+
173
+ do{
174
+
175
+ let jsonArray:NSDictionary = try JSONSerialization.jsonObject(with: data as Data , options: JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary
176
+
177
+ print(jsonArray)
178
+
179
+
180
+
181
+ } catch {
182
+
183
+
184
+
185
+ }
186
+
187
+ ```
188
+
189
+ printの結果
190
+
191
+ ```ここに言語を入力
192
+
193
+ {
194
+
195
+ "\U5317\U6d77\U9053\U30fb\U6771\U5317" = (
196
+
197
+ {
198
+
199
+ name = "\U5965\U5dde\U4ed9\U81fa\U4e03\U798f\U795e";
200
+
201
+ number = 0;
202
+
203
+ },
204
+
205
+ {
206
+
207
+ name = "\U4f1a\U6d25\U4e03\U798f\U795e";
208
+
209
+ number = 1;
210
+
211
+ },
212
+
213
+ {
214
+
215
+ name = "\U51fa\U7fbd\U4e03\U798f\U795e";
216
+
217
+ number = 2;
218
+
219
+ }
220
+
221
+ );
222
+
223
+ "\U95a2\U6771" = (
224
+
225
+ {
226
+
227
+ name = "\U3068\U308a\U3067\U5229\U6839\U5ddd\U4e03\U798f\U795e";
228
+
229
+ number = 3;
230
+
231
+ },
232
+
233
+ {
234
+
235
+ name = "\U5965\U4e45\U6148\U5927\U5b50\U4e03\U798f\U795e";
236
+
237
+ number = 4;
238
+
239
+ },
240
+
241
+ {
242
+
243
+ name = "\U5e38\U9678\U4e03\U798f\U795e";
244
+
245
+ number = 5;
246
+
247
+ },
248
+
249
+ {
250
+
251
+ name = "\U8db3\U5229\U4e03\U798f\U795e";
252
+
253
+ number = 6;
254
+
255
+ },
256
+
257
+ {
258
+
259
+ name = "\U516b\U6e9d\U4e03\U798f\U795e";
260
+
261
+ number = 7;
262
+
263
+ },
264
+
265
+ {
266
+
267
+ name = "\U6a2a\U6d5c\U78ef\U5b50\U4e03\U798f\U795e";
268
+
269
+ number = 8;
270
+
271
+ },
272
+
273
+ {
274
+
275
+ name = "\U6a2a\U6d5c\U4e03\U798f\U795e";
276
+
277
+ number = 9;
278
+
279
+ },
280
+
281
+ {
282
+
283
+ name = "\U6a2a\U6d5c\U702c\U8c37\U516b\U798f\U795e";
284
+
285
+ number = 10;
286
+
287
+ }
288
+
289
+ );
290
+
291
+ }
292
+
293
+
294
+
295
+ ```
296
+
297
+ となります。

2

do{ }catch{}を追加して試してみました。

2017/07/12 02:38

投稿

harima
harima

スコア17

test CHANGED
File without changes
test CHANGED
File without changes

1

回答をswift3 に変換したところ

2017/07/12 02:27

投稿

harima
harima

スコア17

test CHANGED
File without changes
test CHANGED
@@ -109,3 +109,25 @@
109
109
  ```
110
110
 
111
111
  大変忙しいところ申し訳ありませんが、宜しくお願い致します。
112
+
113
+
114
+
115
+
116
+
117
+ 自分なりに変換したソース
118
+
119
+ ```swift3
120
+
121
+ do {
122
+
123
+ let jsonArray:NSArray = try JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSArray
124
+
125
+ print(jsonArray)
126
+
127
+ } catch {
128
+
129
+ print(error)
130
+
131
+ }
132
+
133
+ ```