gpt4 book ai didi

ios - 解析 - 仅下载更新的数据行

转载 作者:行者123 更新时间:2023-11-28 16:19:16 25 4
gpt4 key购买 nike

我在 AWS 上运行解析服务器。数据存储在 mlab 上。在应用程序启动时,我进行查询:

   let query = PFQuery(className: foodDataClassName_)
query.findObjectsInBackgroundWithBlock({(objects : [PFObject]?,error : NSError?) -> Void in

})

它返回所有数据行。我使用 CoreData 在本地保存它们。当有一行数据更新时,我删除之前本地存储的数据,重新下载所有数据并保存。这不是一个好方法。我想要的是我只下载更新的行而不是所有行。我怎样才能做到这一点?谢谢。

最佳答案

你可以做的是:

用户第一次登录到您的应用程序时,您需要从服务器查询所有用户行,因此在这种情况下,您将无条件地执行查询。在此查询中,您可以使用 limit 来限制服务器返回的结果。当您从服务器获得结果时,您需要:

  • 将所有行存储在本地数据库中
  • 将当前的 NSDate 存储在 NSUserDefaults 中

下一次调用您的服务器将只获取更新的行。为了实现它,您需要:

  • 从您的 NSUserDefaults(我们在上面保存的那个)获取上次同步日期
  • 执行查询,但这次的条件是 greaterThan your lastSyncDate

最后,您获取项目的代码应如下所示:

    // check if we synced the date before
let lastSyncDate = NSUserDefaults.standardUserDefaults().objectForKey("lastSyncDate")
let query = PFQuery(className: "MyParseObjectClassName")

if (lastSyncDate != nil){
// get only records that were created/updated since the last sync date
query.whereKey("updatedAt", greaterThan: lastSyncDate!)
}

query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in

// store objects in parse local data store
if (objects?.count > 0){
PFObject.pinAllInBackground(objects)
}

// save the last sync date in user defaults
NSUserDefaults.standardUserDefaults().setValue(NSDate(), forKey: "lastSyncDate")
NSUserDefaults.standardUserDefaults().synchronize()

}

请注意 此处我使用了解析本地数据存储,它允许您轻松地将解析对象存储到本地数据库,而无需使用核心数据。解析本地数据存储由解析 iOS SDK 提供,为您节省大量时间和精力,因此我强烈建议您利用它。本地数据存储还会为您处理创建/更新的对象,它会自动创建新对象并更新现有对象。

您可以在 here 中阅读更多相关信息

关于ios - 解析 - 仅下载更新的数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38682903/

25 4 0
文章推荐: javascript - 问题 : The

tag is not displayed on my

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com