2013-07-04 3 views
0

Я пытаюсь установить один ко многим отношений между 1 пользователем (таблица пользователя) и его контактами (Usercontacts таблицы)Применения Пораженного при попытке установить один ко многим отношений между пользователем и UserContacts (Stackmob)

Я устанавливая отношения аналогично: вызов таким образом, [hypeController uploadContactsStackMob];

- (void)uploadContactsStackMob 
{ 
    NSDictionary *args1 = [[NSDictionary alloc] init]; 
    NSLog([[NSUserDefaults standardUserDefaults] boolForKey:@"isFacebookClicked"] ? @" yes": @" No"); 
    NSLog(@"ajsgd %@",[self.appDelegate coreDataStore]); 

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isFacebookClicked"]) 
    { 
     NSLog(@"context %@",self.managedObjectContext); 
     userObject = [[User alloc]initWithEntity:[NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext] insertIntoManagedObjectContext:self.managedObjectContext]; 
     [userObject setValue:firstName forKey:@"firstname"]; 
     [userObject setValue:lastname forKey:@"lastname"]; 
     [userObject setValue:emailAddress forKey:@"email"]; 
     [userObject setValue:zipCodeTxtFld.text forKey:@"zipcode"]; 
     [userObject setValue:@"password" forKey:@"password"]; 
     [userObject setValue:dateofBirth forKey:@"dateofbirth"]; 
     [userObject setValue:cellPhoneNumber forKey:@"phonenumber"]; 
     [userObject setValue:gender forKey:@"salutation"]; 

     NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=normal", [userDict valueForKey:@"id"]]]; 
     NSData *imageData = [NSData dataWithContentsOfURL:url]; 
     NSString *imageString = [SMBinaryDataConversion stringForBinaryData:imageData name:@"profileImage.jpg" contentType:@"image/jpg"]; 
     [userObject setValue:imageString forKey:@"profile_picture"]; 

     [userObject setValue:[userObject assignObjectId] forKey:[userObject primaryKeyField]]; 

     NSLog(@"context uploadContactsStackMob %@",userObject); 
     [self.managedObjectContext saveOnSuccess:^{ 
      NSLog(@"You created a new User object!"); 
     } onFailure:^(NSError *error) { 
      NSLog(@"There was an error! %@", error); 
     }]; 
    } 
    NSLog(@"contactsObjectsArr %@",contactsObjectsArr); 
    NSLog(@"contactsArray %@",self.allcontactsArray); 
    for (int i = 0; i <[self.allcontactsArray count]; i++) 
    { 
     args1 = [self.allcontactsArray objectAtIndex:i]; 

     Usercontacts *usercontactsObject = [NSEntityDescription insertNewObjectForEntityForName:@"Usercontacts" inManagedObjectContext:self.managedObjectContext]; 
     [usercontactsObject setValue:[args1 valueForKey:@"contactDescription"] forKey:@"contactdescription"]; 
     [usercontactsObject setValue:[args1 valueForKey:@"name"] forKey:@"name"]; 
     [usercontactsObject setValue:[args1 valueForKey:@"phone"] forKey:@"phone"]; 
     [usercontactsObject setValue:@"user_id" forKey:@"Usercontacts_id"]; 
     [usercontactsObject setValue:[usercontactsObject assignObjectId] forKey:[usercontactsObject primaryKeyField]]; 
     // 
     NSError *error = nil; 
     if (![self.managedObjectContext saveAndWait:&error]) { 
      NSLog(@"There was an error! %@", error); 
     } 
     else { 
      NSLog(@"You created a Usercontact object!"); 
      [contactsObjectsArr addObject:usercontactsObject]; 
     } 

     NSLog([[NSUserDefaults standardUserDefaults] boolForKey:@"isSubmitClicked"] ? @"isSubmitClicked yes": @"isSubmitClicked No"); 
     NSLog(@"contactsObjectsArr %@",contactsObjectsArr); 

      [userObject addUsercontactsObject:usercontactsObject]; 

     [self.managedObjectContext saveOnSuccess:^{ 

      NSLog(@"You created a relationship between the User and Usercontact Objects!"); 

     } onFailure:^(NSError *error) { 

      NSLog(@"There was an error! %@", error); 

     }]; 
    } 
} 

Проблема заключается в том, что оно принимает много времени для загрузки на stackmob и My App становится поражен в представлении. Посмотрите мой код и предложите мне лучший вариант, который я могу сделать.

ответ

0

Предлагаю включить кеш, см. here для получения подробной информации о том, как. Таким образом, каждое сохранение не приведет к поездке туда и обратно на сервер. Вы также можете переместить эту операцию в фоновый режим, если вы используете [SMCoreDataStore contextForCurrentThread] для получения управляемого контекста.

 Смежные вопросы

  • Нет связанных вопросов^_^