Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse's CurrentUser doesn't keep refreshed data

Using Parse for iOS, I modified the _User's table to have a field called "Friends" which is an array of pointers to other _Users (by the way, I also have other additional fields).

When I call PFUser.currentUser(), I don't see this friends field in the user object. So I call PFUser.currentUser().fetch() (because refresh method doesn't seem to exist anymore) and I finally have the friends field in my currentUser object.

However, as soon as I exit the app, this field is lost. It doesn't seem to be saved locally unlike all the other fields of the current user.

How am I supposed to force a refresh of the cached current user ?

like image 932
Kalzem Avatar asked May 02 '26 21:05

Kalzem


2 Answers

According to parse.com itself and one of their posts, there is no other way to keep your user up-to-date:

saveEventually does not write through any caches at this time, including the currentUser, if the app has been restarted. You'll need to regularly call fetch to keep it up-to-date. We are aware that this is inconvenient, and are looking into ways to make it work better for you.

like image 196
Christian Avatar answered May 04 '26 10:05

Christian


Are you sure that you want your user objects to contain a value that's an array like that? I obviously don't know your use application, but I would recommend using a PFRelation instead. It works just like an array, but the Parse Framework provides a bunch of additional functionality along with it.

As for your specific question it might have to deal with Parse. Maybe they don't automatically retrieve and save arrays that are on an object. That would be my guess because an array could contain who knows how much data in it. I still don't know why they wouldn't locally save that data after it's fetched.

My suggestion is probably a little over the top, but would most likely be the best outcome. Utilize a local database such as CoreData or even the ParseLocalDatastore. Then encapsulate the Parse framework to have your own User object where you can store the information, which can also maintain persistence via your database.

like image 39
BlueBear Avatar answered May 04 '26 11:05

BlueBear



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!