このiOSアプリケーション用のフィードを作成するAPIのLaravel Routeがあります。テーブルから投稿を選択してページ内の投稿を分割することで動作しますこのように、記事をダウンロードするには、ページ番号を送信します。Laravel JSONフィード内の投稿のページ番号を取得
public function feed(){
$user = JWTAuth::parseToken()->authenticate();
if (request()->has('page') && $user != null) {
$pagesize = 20;
$query = Posts::join('clase_user', function ($join) {
$user = JWTAuth::parseToken()->authenticate();
$join->on('clase_user.clase_id', '=', 'posts.clase_id')
->where('clase_user.user_id', '=', $user->id);
})
->with('user')
->skip(((int)request()->get('page') - 1) * $pagesize)
->take($pagesize)->get();
return $query;
}else{
return response()->json(['error' => 'Pagina no especificada'], 500);
}
}
すべてが素晴らしい作品が、問題は、私のiOSのコードは、モミのページをダウンロードするために、いくつかのポストが途中で失われる20件の以上の新しい投稿があったときであります、あなたが1,2,3のようにページ数を続けるので、あなたが下にスクロールするとうまくいきます...しかし、もし私が20以上の新しい投稿があれば、私はそれらが失われると更新すると言ったように。
ポスト(スウィフト3)をダウンロードする私のiOSのコードは:
func dwonloadPosts(page: Int!){
let http = "\(Base_URL)\(feed_url)?token=\(userToken.getToken())&page=\(page)"
self.pyroFire.Download(mod: HTTPMethod.get, URL: http) {
if let posts = self.pyroFire.getResult()["posts"] as? [Dictionary<String, AnyObject>]{
var new = true
for post in posts{
if let id = post["id"] as? Int!{
var idRow = 0
for oldPost in self.Posts{
if(oldPost.id == id){
new = false
if let text = post["text"] as? String!{
self.Posts[idRow].text = text
}
if let archivo = post["archivo"] as? String!{
self.Posts[idRow].archivo = archivo
}
if let updated_at = post["updated_at"] as? String!{
self.Posts[idRow].updated_at = updated_at
}
}
idRow += 1
}
if(new){
var NewPost = Post()
NewPost.id = id
if let user_id = post["user_id"] as? Int!{
NewPost.user.id = user_id
}
if let clase_id = post["clase_id"] as? Int!{
NewPost.clase_id = clase_id
}
if let text = post["text"] as? String!{
NewPost.text = text
}
if let archivo = post["archivo"] as? String!{
NewPost.archivo = archivo
}
if let created_at = post["created_at"] as? String!{
NewPost.created_at = created_at
}
if let updated_at = post["updated_at"] as? String!{
NewPost.updated_at = updated_at
}
if let user = post["user"] as? Dictionary<String, AnyObject>{
if let name = user["name"] as? String!{
NewPost.user.name = name
}
if let about = user["about"] as? String!{
NewPost.user.about = about
}
if let text = user["handler"] as? String!{
NewPost.user.handler = text
}
if let archivo = user["pp"] as? String!{
NewPost.user.pp = archivo
}
if let created_at = user["email"] as? String!{
NewPost.user.email = created_at
}
if let updated_at = user["created_at"] as? String!{
NewPost.user.created_at = updated_at
}
}
self.Posts.append(NewPost)
}
}
}
}
}
self.collectionV.reloadData()
}
私の質問は、ポストのIDを送信する方法を見つけると、その後のポストは、私は更新できる属するページ番号を取得することです成功しました。
あなたがより良いフィードを作成するためのより良い方法をお持ちの場合は、アイデアを投稿するために開いてください。
を、これは私をたくさん助けたそんなにありがとう! !! –
この場合のオフセットは、累積結果カウントを意味します。例:20行を入力した場合、オフセットは最初は20になります。次のページでは、20 * pageNumberになります。 twitterがページを管理する方法の概要は次のとおりです。https://dev.twitter.com/rest/public/timelines – nathan
ページング戦略に興味がある場合は、オンラインで検索します(例:オフセット/スキップ、ページトークン)。 https://softwareengineering.stackexchange.com – nathan