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

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

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

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

1455閲覧

NeetMSTranslatorを用いてMicrosoft Translator APIを叩く方法

Stephen_J

総合スコア18

Swift

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/12/03 17:29

編集2016/12/04 02:55

###前提・実現したいこと
CocoaPodsにて公開されているNeetMSTranslator(https://github.com/neethouse/NeetMSTranslator)を使用して、Microsoft Translator APIを叩こうとしています。
試しに下記のコードを実行したところ,コンソールにnilのみが表示されてしまいます。

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

コンソールに「nil」のみが表示されており、下記コードのsuccess部分のprint(string)は実行されておらず、print(err)の部分が実行されているところまでは確認ができました。

###該当のソースコード

swift

1import UIKit 2import NeetMSTranslator 3 4class ViewController: UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 var tra = NMSTranslator.sharedTranslator() 9 tra.initializeTranslatorWithClientID("xxxxxxxxx(client ID)", clientSecret: "xxxxxxxxx(client secret)") 10 tra.transrateWithText("hello", 11 to: "ja", 12 success: { (response, string) -> Void in 13 print(string) // こんにちは 14 }) { (response, data, err) -> Void in 15 print(err) 16 } 17 } 18 19 override func didReceiveMemoryWarning() { 20 super.didReceiveMemoryWarning() 21 // Dispose of any resources that can be recreated. 22 } 23}

###試したこと
解答欄でご指摘いただいたことを受け、
let t = NMSTranslator()

var tra = NMSTranslator.sharedTranslator()
に書き換えたところ、

fatal error: unexpectedly found nil while unwrapping an Optional value

が表示されるようになりました。

TARGETS -> Build Setting -> Swift Compiler -> Use Legacy Swift Language Version

をYESにしたりはしましたが、結果は変わりませんでした。

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

足りない情報等あれば、ご指摘いただければと思います。
なにとぞ宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

自己解決

お恥ずかしい話ですが、クライアントIDを間違えていました・・・

アプリケーションの登録(https://datamarket.azure.com/developer/applications/register)の、クライアントIDを入力すべきだったのですが、アカウント情報(https://datamarket.azure.com/account)の、顧客IDを入力しておりました・・・

コードは下記の通りです。

swift

1import UIKit 2import NeetMSTranslator 3 4class ViewController: UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 var tra = NMSTranslator.() 9 tra.initializeTranslatorWithClientID("xxxxxxxxx(client ID)", clientSecret: "xxxxxxxxx(client secret)") 10 tra.transrateWithText("hello", 11 to: "ja", 12 success: { (response, string) -> Void in 13 print(string) // こんにちは 14 }) { (response, data, err) -> Void in 15 print(err) 16 } 17 } 18 19 override func didReceiveMemoryWarning() { 20 super.didReceiveMemoryWarning() 21 // Dispose of any resources that can be recreated. 22 } 23}

(補足)
下記のサイトで、Get Tokenを試したりして、client IDが間違っていることに気づきました。
Microsoft Data Market OAuth Developer Console

投稿2016/12/05 14:42

編集2016/12/05 14:48
Stephen_J

総合スコア18

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

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

0

githubみると最初にsharedTranslatorというクラスメソッドを実行してますが、これは必要ないのでしょうか?

Objective

1// obj-c 2NMSTranslator *tra = [NMSTranslator sharedTranslator];

投稿2016/12/03 18:01

fromageblanc

総合スコア2724

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

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

Stephen_J

2016/12/04 02:56

ご指摘ありがとうございます。 let t = NMSTranslator() を var tra = NMSTranslator.sharedTranslator() に書き換えたところ、コンソールに fatal error: unexpectedly found nil while unwrapping an Optional value が表示されるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問