問題タブ [afincrementalstore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
uitableview - NSFetchedResultsController を使用した AFIncrementalStore でオブジェクトごとに 3 つのリクエスト
Parseをバックエンド サービスとして使用するために、AFIncrementalStore ですべてをセットアップしました。このようなサービスを使用すると、API リクエストのカウントが重要になります。たとえば、1 か月あたり 100 万リクエストを超えると (成功した指標ではありますが!)、ある程度の請求が発生する可能性があります。これは通常問題にはなりませんが、次のメソッドにブレークポイントを設定すると、次のようになりますAFHTTPClient
。
特定のオブジェクトに対する要求が 3 回発生することがわかりました。必要なのは 1 回だけです。
さまざまなメモリ アドレスが から取得されAFHTTPRequestOperation
ていることに注意してください。プロパティを出力して、各リクエストの (URL の末尾にあるランダムな文字列)request.URL
を調べています。objectId
2日間のデバッグと調査の後で、私は の仕組みに十分に慣れていないNSIncrementalStore
か、これを理解することができません。AFIncrementalStore
意図的かどうかにかかわらず、これを引き起こしている可能性のあるものについての考えを聞きたいです.
NSFetchedResultsController
をと一緒に使用していることを付け加えるかもしれませんUITableView
。テーブルビューのデータ ソースに対するオブジェクトの最初のリクエストのスタック トレースを追跡しました。他の 2 つの要求は、 の内部メソッドにまでさかのぼりますAFIncrementalStore
。
ios - AFIncrementalStore との関係のマッピング
AFIncrementalStore を自分のプロジェクトに統合しようとしていますが、関係を機能させる方法を理解するのに苦労しています。
ドキュメントとページの 2 つのモデルがあるとします。ドキュメントには多くのページ (1 対多) があります。各モデルは、互いに逆の関係にあります。
だから私はできる:
また
ドキュメントに属するすべてのページを取得しようとしています。必要なメソッドを実装する AFIncrementalStore サブクラスと AFHTTPClient サブクラスがあります。
正しい REST URI が呼び出されていることがわかります (例: /documents/:id/pages)。また、ページがダウンロードされ、SQL データベースのページ テーブルに格納されていることも確認できます。
問題は、両者の関係が成り立たないことです。DB を見ると、外部キー列が空です。
また、 myDocument.pages を実行しても何も返されません。
新しいデータがフェッチされたときに、これら 2 つを手動でリンクする必要がありますか? AFIncrementalStore ソースを読んでいますが、何も突き出ていません。
考え?
ios - AFIncrementalStore による魔法の記録
AFIncrementalStore と Magical Record を組み合わせたら、どんな生活になるのだろうとずっと考えていました。インクリメンタル ストアを魔法のレコードのストアとして設定する方法がわかりません。そのような操作を実行する方法を知っている人はいますか?
ios - AFIncrementalStore コンテキストと MagicalRecord MR_contextForCurrentThread
AFIncrementalStore を MagicalRecord と一緒に使用しようとしています。
プロパティがほとんどないビールクラスがあります(BreweryDB Webサービスから)。ビールをフェッチするために、[Beer MR_fetchAllWithDelegate:self] を使用しています。これは、NSFetchedResultsController インスタンス (これを取得して、beerFetchController に割り当てます) を返し、そのコントローラーを使用して実際のフェッチを実行します。ご覧のとおり、ビュー コントローラーをメソッドのデリゲートとして設定すると、そのビュー コントローラーが beerFetchController のデリゲートとして設定されます。ここまでは順調ですね。ビールを表示するテーブル ビューがあり、メソッドを実装します。
したがって、 AFIncrementalStore がデータを取得してコンテキストに入れるたびに、コントローラーに通知され、このメソッドを呼び出す必要があり、テーブルが更新されます。問題は、このデリゲート メソッドがまったく呼び出されないことです。いくつかの調査の後、私はいくつかの結論を引き出すことができました。
問題は、[NSManagedObjectContext MR_contextForCurrentThread] が、AFIncrementalStore が内部的に使用するバッキング コンテキストである子コンテキストを返すことです。AFIncrementalStore は子ではなく親に保存するため、コントローラーは何かが変更されたことを認識せず、デリゲート メソッドは呼び出されません。私はこのようにメソッドを変更することができました:
コントローラーを MR_contextFromCurrentThread によって返されるコンテキストにバインドする代わりに、その親にバインドします。そして、期待どおりに機能し、コンテキストが変更され、コントローラーがそれを認識し、デリゲート メソッドが呼び出されます。問題は、メソッドの実装を変更する必要がないように、変更を親コンテキストから子コンテキストにプッシュする方法はありますか?
iphone - AFIncrementalStore または Restkit を使用する必要がありますか?
私は 2 つのフレームワークを見て、Restkit で作業を開始しましたが、正しく動作させるのに問題があり、かなり複雑であることがわかりました。さらに悪いことに、オンラインで見つけたほとんどの情報はドキュメントであっても古くなっているため、代わりに AFIncrementalStore を使用する必要があるかどうか疑問に思っています。
どちらか一方を使用する理由を誰か教えてもらえますか? プロジェクトの説明から、彼らは同じことをしているように見えますか、それとも私が間違っていますか?
アプリで通信するRails APIのセットアップがあり、GET、POSTなどのモデル+データ(アプリのコアデータクラスとして表される)を実行できる必要があります。
ios - AFIncrementalStore および http://apiurl.com/users/1/posts などの API URL へのアクセス
AFIncreementalStore の gitHub ページに含まれている例を見て、http://apiurl.com/usersのような URL からリモート API からオブジェクトを要求するプロセスを理解していると思います。基本的に、たとえば UsersListViewController で次のようにします。
http://apiurl.com/users/1/postsなどの URL から「投稿」のようなものを取得する方法を理解するのに苦労しています。
私の最初の考えは、フェッチ要求に述語を追加することです。
この述語を追加すると、この URL を使用して GET 要求が生成されますか (述語で使用したユーザー ID が 1 であると仮定します)? http://apiurl.com/users/1/posts
ios - Core Data および AFIncrementalStore を使用する場合の JSON 属性の再フォーマット
私はここで構築されたものと非常によく似たiOSアプリを持っています: https://devcenter.heroku.com/articles/ios-core-data-buildpack-app - つまりCore DataとAFIncrementalStoreですが、サービスを提供するカスタムRails 3.1サーバーを使用していますJSON。
同様の性質の2つの問題があります。
- Railsには という名前の属性がありますが、これはObjective-Cの予約語なので、iOSアプリでは
id
などにリネームしたいと思います。activityId
コードのどこでこれを実行する必要がありますか?id
->activityId
翻訳? - 私のすべての日付フィールドは現在
(null)
、iOS アプリのように表示されてい"2012-09-14T11:32:09+02:00"
ます。iOS コードのどこに独自の日付パーサーを追加する必要がありますか?
可能であれば、サーバー側でのカスタム JSON 生成を避けたいと思います。
ありがとう!