iphone - back4app - parse معنى




يوس+Parse.com: كبكاشيبوليسيكاشيثنيتورك، واسترداد البيانات مرتين (2)

عند استخدام kPFCachePolicyCacheThenNetwork التخزين المؤقت يتم تشغيل رد الاتصال الخاص بك دائما مرتين. وذلك لأن السياسة هي استخدام ذاكرة التخزين المؤقت ثم انتقل إلى الشبكة، وليس لاستخدام ذاكرة التخزين المؤقت حصريا.

الحل هو تتبع عدد المرات التي تم استدعاء كتلة الخاص بك، حتى تتمكن من تحديد ما إذا كنت تحصل على النتيجة المخزنة مؤقتا أو نتيجة جديدة من الشبكة. تحليل مزيد من المعلومات حول هذا هنا .

لقد أنشأت تطبيق يوس باستخدام Parse.com

أريد استرداد البيانات من ذاكرة التخزين المؤقت في البداية ثم من الشبكة

لهذا لقد استخدمت kPFCachePolicyCacheThenNetwork سياسة مخبأ وتشيت هو اختيار لمتطلبات بلدي.

PFQuery *employesquery = [PFQuery queryWithClassName:@"employesTable"];
    [employesquery whereKey:@"UserID" equalTo:[PFUser currentUser]];
    [employesquery includeKey:@"empID"];
    [employesquery includeKey:@"empID.user"];

    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view  animated:YES];


//APPLIES CACHE... ********
        employesquery.cachePolicy = kPFCachePolicyCacheThenNetwork;

    [employesquery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        [hud hide:YES];
        NSMutableArray *empData = [[NSMutableArray alloc] init];
        for (PFObject *object in objects)
        {
            //Getting Data For Item
            PFObject *employeeObject = [object objectForKey:@"empID"];
            [empData addObject:employeeObject];
        }
        [self fetchEmployeeData:empData];

    }];

ولكن باستخدام هذا كل البيانات استرداد مرتين، البيانات القابلة للتكرار.

كيفية تجنب هذه البيانات القابلة للتكرار،

مرة واحدة يتم الحصول على البيانات من الشبكات يتم عرض البيانات المعروضة سابقا (باستخدام ذاكرة التخزين المؤقت) / خفية.

لقد حاولت مع [PFQuery clearAllCachedResults];

تم مسح كل ذاكرة التخزين المؤقت بحيث لا توجد بيانات في ذاكرة التخزين المؤقت للتكرار التالي.


يجب مسح مصفوفة البيانات التي يتم استخدامها لكائنات مخزن تم الاستعلام عنها من تحليل في فيندوبجكتسينباكغروندويثبلوك: ^ (نساراي * الكائنات، خطأ نسيرور *).

- (void)refreshData
{
    PFUser *currentUser = [PFUser currentUser];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ = '%@' OR %@ = '%@'",
                                                           kMessageUserSendIdKey, currentUser.objectId,
                                                           kMessageUserReceiveIdKey, currentUser.objectId]];

PFQuery *query = [PFQuery queryWithClassName:kMessageClassKey predicate:predicate];
[query addDescendingOrder:kMessageTimeCreatedKey];
[query includeKey:kMessageUserSendKey];
[query includeKey:kMessageUserReceiveKey];
[query setCachePolicy:kPFCachePolicyCacheThenNetwork];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        // TODO: Clear the data array
        self.messagesDataArray = [NSMutableArray new];

        if (objects.count > 0) {
            [self.messagesDataArray addObject:objects[0]];
            for (int i = 1; i < objects.count; i++) {
                PFObject *messageChat = [objects objectAtIndex:i];
                if (![self isExistWithMessageChat:messageChat]){
                    [self.messagesDataArray addObject:messageChat];
                }
            }
            [self.tableView reloadData];
        }
     }
     else {
        NSLog(@"Error: %@ %@", error, [error userInfo]);
     }
   }];
}






parse.com