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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Q&A

解決済

1回答

1725閲覧

objective-cで、PHPを通して取得した結果をNSStringに入れた時の型違いエラー

KK_K

総合スコア8

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

0グッド

0クリップ

投稿2016/09/07 22:45

###前提・実現したいこと
objective-cで、PHPを通して取得した結果をNSStringに入れた時に、型違いエラー

###発生している問題・エラーメッセージ

エラーメッセージ data = ( { "api_url" = "http://11.11.111.111/471610001/api/"; } ); message = "OK."; } 2016-09-08 07:37:26.477 B[1995:67240] -[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x7c1a3630 2016-09-08 07:37:26.484 B[1995:67240] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x7c1a3630' *** First throw call stack: ( 0 CoreFoundation 0x03f8c494 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x039a1e02 objc_exception_throw + 50 2 CoreFoundation 0x03f96253 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 3 CoreFoundation 0x03ecb89d ___forwarding___ + 1037 4 CoreFoundation 0x03ecb46e _CF_forwarding_prep_0 + 14 5 B 0x001fd703 __35-[LoginViewController requestLogin]_block_invoke + 339 6 B 0x001fba6b __64-[AFJSONRequestOperation setCompletionBlockWithSuccess:failure:]_block_invoke.99 + 43 7 libdispatch.dylib 0x04c56363 _dispatch_call_block_and_release + 15 8 libdispatch.dylib 0x04c799cd _dispatch_client_callout + 14 9 libdispatch.dylib 0x04c5ef7c _dispatch_main_queue_callback_4CF + 910 10 CoreFoundation 0x03ed61be __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14 11 CoreFoundation 0x03e94434 __CFRunLoopRun + 2356 12 CoreFoundation 0x03e93846 CFRunLoopRunSpecific + 470 13 CoreFoundation 0x03e9365b CFRunLoopRunInMode + 123 14 GraphicsServices 0x06587664 GSEventRunModal + 192 15 GraphicsServices 0x065874a1 GSEventRun + 104 16 UIKit 0x00ee3eb9 UIApplicationMain + 160 17 B 0x002bcdaa main + 138 18 libdyld.dylib 0x04ca3a25 start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException ###該当のソースコード **objective-c** LoginViewController.m NSDictionary* _data = [responseObject objectForKey:@"data"]; NSString* strurl = [Common convertObjectToString:[_data objectForKey:@"api_url"]];

Commonクラス

+ (NSString *)convertObjectToString:(id)originObject { if (originObject == nil || originObject == (id)[NSNull null]) { return @""; } NSString *result = @""; if ([originObject isKindOfClass:[NSString class]]) { result = (NSString *)originObject; } else if ([originObject isKindOfClass:[NSNumber class]]) { result = [originObject stringValue]; } else { result = @""; } return result; }

###試したこと
課題に対してアプローチしたことを記載してください
convertObjectToString を外して、単純に_data objectForKey:@"api_url"にしてみましたが
結果は同じでした。

###補足
型違いと言われているようなのですが、他の部分でも同じロジックでデータを取得しており、なぜここだけ型違いエラーになるのかどうしてもわかりませんでした。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

なぜかわかりませんが、他と違い配列で返ってきていたので

objective

1 NSArray* _data = [responseObject objectForKey:@"data"]; 2 3 if (_data != nil) { 4 NSString* strurl; 5 for (NSDictionary *dicData in _data) { 6 strurl = [Common convertObjectToString:[dicData objectForKey:@"api_url"]]; 7 } 8

で解決しました。

投稿2016/09/08 01:26

KK_K

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問