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

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

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

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

Swift

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

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

Swift 2

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

Q&A

解決済

1回答

2739閲覧

Nifty Cloud × Swiftで、フォロー/フォロワーの機能を実装したい

chaaaaaama

総合スコア7

Xcode

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

Swift

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

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

Swift 2

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

0グッド

1クリップ

投稿2016/07/14 06:46

###前提・実現したいこと
現在、Nifty Cloud(以降、NCMB)を用いたSNSアプリをSwiftで開発しております。
その中で、フォロー/フォロワーの機能を実装したいと思っているのですが、ポインタの扱い方がいまいちよくわかりません。
とりあえず、NCMBのダッシュボードでデータストアに"Follow"というクラスを作り、その中に'user'と'follow'のカラムをつくりました。そして、そこにポインタとしてユーザー情報を保存するところまでやってみました。

###発生している問題・エラーメッセージ
NCMBに保存している"Follow"クラスの'user'から現在ログインしているユーザーを取得し、その'follow'カラムに保存してある別のユーザーの情報をtableViewに表示させたいです。
下記コードは、tableViewのデータをロードするメソッドです。

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

Swift

1func loadData() { 2 userInfo.removeAll() 3 4 let user = NCMBUser.currentUser() 5 6 let innerQuery = NCMBQuery(className: "Follow") 7 innerQuery.whereKey("user", equalTo: user) 8 9 let query = NCMBQuery(className: "Follow") 10 query.whereKey("follow", matchesQuery: innerQuery) 11 query.orderByDescending("createDate") 12 13 query.findObjectsInBackgroundWithBlock({(objects, error) in 14 //データ読み込みの処理 15 if error != nil { 16 //読み込みに失敗したのとき 17 print(error) 18 } else { 19 //読み込みに成功したとき 20 if objects.count > 0 { 21 self.userInfo = objects 22 self.tableView.reloadData() 23 } 24 } 25 }) 26 }

##補足情報
ポインタも曖昧なのですが、NCMBのオブジェクトやクエリの概念も曖昧なので、コードが根本的に違うことがあるかもしれません。。。
よろしくお願いします!

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

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

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

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

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

guest

回答1

0

ベストアンサー

queryのincludeKeyというプロパティにカラムを指定すると、そのカラムのポインタで指定したオブジェクトを取得できますよ。

今回だと、

let user = NCMBUser.currentUser() let innerQuery = NCMBQuery(className: "Follow") innerQuery.whereKey("user", equalTo: user) let query = NCMBQuery(className: "Follow") query.whereKey("follow", matchesQuery: innerQuery) query.orderByDescending("createDate")

の部分を、以下のように変更すればいいと思います。

let user = NCMBUser.currentUser() let query = NCMBQuery(className: "Follow") query.includeKey = "follow" query.whereKey("user", equalTo: user) query.orderByDescending("createDate")

このように書くことで、userカラムからNCMBUser.currentUser()と一致するものを取得します。
その時に、includeKeyでfollowカラムを指定しているので、ポインタ指定しているオブジェクトも一緒に取得してくれると思います。

合っているか不安なので、実装後できたかどうかコメントをいただければと思います。

投稿2016/07/23 16:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問