Я новичок в объективе c. Я пытаюсь установить кнопку сохранения, когда я нажимаю кнопку сохранения. И делать saveInBackgroundWithBlock, а также.parse saveInBackgroundWithBlock
*** Завершение приложения из-за неотображенного исключения «NSInternalInconsistencyException», причина: '- [UIKeyboardTaskQueue waitUntilAllTasksAreFinished] может вызываться только из основного потока.'
вот мой код `
saveButton.enabled = NO;
PFQuery *medQuery = [PFQuery queryWithClassName:medicineClassName];
// Retrieve the object by id
[medQuery getObjectInBackgroundWithId:self.receiveObjectId block:^(PFObject *medObject, NSError *error) {
// Now let's update it with some data
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[medObject setObject:[formatter numberFromString:self.medIDTF.text] forKeyedSubscript:@"medID"];
// Medicine image
NSData *imageData = UIImageJPEGRepresentation(self.medImage.image, 0.8f);
NSMutableString *tmpString = [[NSMutableString alloc] init];
tmpString = [self filenameEncoderFromString:(NSMutableString *)self.medMerEngNameTF.text];
NSString *fileName = [NSString stringWithFormat:@"%@.png", tmpString];
PFFile *imageFile = [PFFile fileWithName:fileName data:imageData];
/*
if (imageFile == nil) {
[medObject setObject:[UIImage imageNamed:@"Ironman head.png"] forKey:@"medImage"];
} else {
[medObject setObject:imageFile forKeyedSubscript:@"medImage"];
}*/
[medObject setObject:imageFile forKey:@"medImage"];
// other Medicine columns
tmpString = [self filenameEncoderFromString:(NSMutableString *)self.medMerEngNameTF.text
];
[medObject setObject:tmpString forKeyedSubscript:@"medMerEngName"];
[medObject setObject:self.medMerChiNameTF.text forKeyedSubscript:@"medMerChiName"];
[medObject setObject:self.medScienceTF.text forKeyedSubscript:@"medScienceName"];
[medObject setObject:self.medCategoryTF.text forKeyedSubscript:@"medCategory"];
// show progress when saving
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDAnimationFade;
hud.labelText = @"Uploading...";
[hud showAnimated:YES whileExecutingBlock:^{
float progress = 0.0f;
while (progress < 1.0f) {
progress += 0.01f;
hud.progress = progress;
usleep(10000);
}
}];
// update medicine to parse
[medObject saveInBackgroundWithBlock:^(BOOL successed, NSError *error) {
if (successed == YES) {
// show success message and hide the saving progress
MBProgressHUD *hudd = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hudd.mode = MBProgressHUDModeCustomView;
hudd.labelText = @"Upload Successfully";
hudd.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"[email protected]"]];
[hudd showAnimated:YES whileExecutingBlock:^{
//
[self setUneditable];
[hud hide:YES];
} completionBlock:^{
// MedicineTableViewController *mtvd = [[MedicineTableViewController alloc] init];
// [mtvd download];
// Notify table view to reload the medicines from parse cloud
[[NSNotificationCenter defaultCenter] postNotificationName:@"refreshParse" object:self];
}];
`
спасибо вам помочь
большое спасибо. @ Mrbcg. оно работает!!! Но немного глупо, если MBProgress все еще работает и swtich к следующей задаче saveInBackground, MBProgress немедленно останавливается. это не то, что я хочу для пользователя. БЛАГОДАРЯ! –
Если вы не возражаете, пожалуйста, примите мой ответ. Благодаря! – mrbcg
извините, я слишком новичок в этом сайте, прежде чем я просто объясню для меня ответ, что я нажимаю галочку на зеленый? –