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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

803閲覧

SwifterDemoiOSを実機でシミュレーションしたいです。

tmyk1979

総合スコア145

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2021/11/25 07:33

前提・実現したいこと

SwifterDemoiOSをシミュレータ(実機)でシミュレーションしたいです。

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

Swifterのデモをダウンロードして、Xcode(11.6)で開きました。
シミュレータにはTwitterが入っていなかったので実機(iPhoneSE(iOS13.6))でRunしようとしたのですが、エラーが多数出てbuild出来ない状態です。

イメージ説明

79行目と85行目 ・・・・・・・・type of expression is ambiguous without more context 81行目と87行目と96行目と106行目 ・・・・・・・・Closure expression is unused 94行目 ・・・・・・・・Missing argument for parameter 'success' in call 104行目 ・・・・・・・・Value of type 'Error' has no member 'array'

該当のソースコード

Swift

1 private func authorizeWithWebLogin() { 2 let callbackUrl = URL(string: "swifter-L6ng3B4WIdkAWso9k5zEqq6S9://")! 3 4 if #available(iOS 13.0, *) { 5 swifter.authorize(withProvider: self, callbackURL: callbackUrl) { _, _ in 6 self.fetchTwitterHomeStream() 7 } failure: { error in 8 self.alert(title: "Error", message: error.localizedDescription) 9 } 10 } else { 11 swifter.authorize(withCallback: callbackUrl, presentingFrom: self) { _, _ in 12 self.fetchTwitterHomeStream() 13 } failure: { error in 14 self.alert(title: "Error", message: error.localizedDescription) 15 } 16 } 17 } 18 19 private func authorizeWithSSO() { 20 swifter.authorizeSSO { _ in 21 self.fetchTwitterHomeStream() 22 } failure: { error in 23 self.alert(title: "Error", message: error.localizedDescription) 24 } 25 } 26 27 private func fetchTwitterHomeStream() { 28 swifter.getHomeTimeline(count: 20) { json in 29 // Successfully fetched timeline, so lets create and push the table view 30 self.jsonResult = json.array ?? [] 31 self.performSegue(withIdentifier: "showTweets", sender: self) 32 } failure: { error in 33 self.alert(title: "Error", message: error.localizedDescription) 34 } 35 }

試したこと

それぞれのエラーについて検索してみたのですが、Swiftについて勉強を始めたばかりの自分の理解度ではエラーの原因は分かっても、ではどうすれば良いのかまでは分かりませんでした。

94行目のMissing argument for parameter 'success' in callについても入力補助が出るのですが、その入力補助をどう変えれば良いのか分からない状態です。

Consumer APIやSecret、CallBackURLなどはきちんと入力できていると思います。
CallbackURLは画像ではxxxxx・・・と入力していますが
swifter-{<ConsumerAPI>}://を入力しています。

補足情報(FW/ツールのバージョンなど)

Xcode11.6
iPhoneSE
iOS13.6

使えるMacが古いものしかなく、実機でテストできるとなるとこの組み合わせしか無いため、この組み合わせでやっています。

Swiftを勉強し始めて、ガチャや簡単な計算を行うアプリはいくつか作ったのですが、まずはツイッターのデータを扱えるようになりたいと思い、ここで質問させていただいたおかげもあってSwifterを使って自分のアプリからツイートできるようにはなりました。

今はSwifterでタイムラインを表示できるようになりたいと思った所、デモがある事を知り、デモを動かしてみたいと思った次第です。

エラーについて検索して原因が分かってもどうすれば良いのか分からないのでツイッターはまだ自分には早いかも知れないとも思っています。

エラーが多いので一つでも解消法を教えていただけると助かります。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

時間はかかりましたが何とか自己解決できました。
クロージャ(?)の書き方が現行の書き方とは少し違っていたようです。
まだクロージャの働きをよく分かっていないのですが、何とかとっかかりになりそうな箇所としてswifter.getHomeTimeLineという記述があったのでそのまま検索したところ、タイムラインの取得方法が書いてあり、それに倣って元のコードを修正したところエラーが消えたので、他の部分も同じように修正していきました。ただ、検索しても正しいコードを見つけられなかった部分もあり、そこは勘で書いてみたら当たっていたという感じでした。

Swift

1 2 private func authorizeWithWebLogin() { 3 let callbackUrl = URL(string: "swifter-L6ng3B4WIdkAWso9k5zEqq6S9://")! 4 5 if #available(iOS 13.0, *) { 6 swifter.authorize(withProvider: self, callbackURL: callbackUrl,success: { _, _ in 7 self.fetchTwitterHomeStream() 8 }, failure: { error in 9 self.alert(title: "Error", message: error.localizedDescription) 10 }) 11 } else { 12 swifter.authorize(withCallback: callbackUrl, presentingFrom: self, success: { _, _ in 13 self.fetchTwitterHomeStream() 14 }, failure: { error in 15 self.alert(title: "Error", message: error.localizedDescription) 16 }) 17 } 18 } 19 20 private func authorizeWithSSO() { 21 swifter.authorizeSSO(success: { _ in 22 self.fetchTwitterHomeStream() 23 }, failure: { error in 24 self.alert(title: "Error", message: error.localizedDescription) 25 }) 26 } 27 28 private func fetchTwitterHomeStream() { 29 swifter.getHomeTimeline(count: 20,success: { json in 30 // Successfully fetched timeline, so lets create and push the table view 31 self.jsonResult = json.array ?? [] 32 self.performSegue(withIdentifier: "showTweets", sender: self) 33 }, failure: { error in 34 self.alert(title: "Error", message: error.localizedDescription) 35 }) 36 } 37 38

できてみると回答をいただけるような質問ではなく、この程度なら自分で解決しろと言われてもおかしくないのですが、私のレベルではどのように検索するとヒントが得られるのかも分からず四苦八苦しておりました。
自己解決にはなりましたが、この質問を閲覧して少しでも気にかけてくださった方がおりましたらお礼を言わせていただきます。ありがとうございました。

投稿2021/12/07 19:48

tmyk1979

総合スコア145

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問