2014-10-17 3 views
0

Я использую новейшую версию IOS Разбор SKD (v1.4.2) и получить мое приложение на самом деле готовы к прошивкой 8 ...Parse.com: saveInBackgroundWithBlock - блок не называется

Теперь я наткнулся на следующее проблема:

Если пользователь подписывается на push-канал, я использую метод saveInBackgroundWithBlock для отображения предупреждения после успешной подписки. Проблема в том, что удаленный блок никогда не вызывался!

Подключить его самостоятельно без каких-либо проблем - новый канал сразу появляется на сервере Parse.com.

Так что я действительно смущен! ;)

У кого-то есть такая же проблема, и у нее есть решение?

PFInstallation *currentInstallation = [PFInstallation currentInstallation]; 
    [currentInstallation addUniqueObject:channel forKey:@"channels"]; 
    [currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
     if (!error) { 

      // Show success Alert 
      UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Success" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
      [successAlert show]; 

     } else { 

      // Show error Alert 
      UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
      [errorAlert show]; 

     } 
    }]; 

Update: Я играл с ним и заметил, что блок называется, но мое предупреждение не показано ...

+0

Что именно вы делаете «Показать предупреждение успеха»? раздел? Если вы выполняете какие-либо задачи пользовательского интерфейса (например, UIAlertView), убедитесь, что вы отправили его в основную очередь – Paulw11

+0

@ Paulw11 Я играл с ним, и я думаю, что вы правы - если я использую 'NSLog', он называется .. Но UIAlertView не появляется:/Можете ли вы помочь мне отправить его в основную очередь? 'UIAlertView * successAlert = [[UIAlertView alloc] initWithTitle: @" Succeeded "message: @" "delegate: self cancelButtonTitle: @" OK "otherButtonTitles: nil, nil]; [successAlert show]; ' –

+0

@ Paulw11 Я попробовал' [self performSelectorOnMainThread: @selector (pushSucces) withObject: nil waitUntilDone: YES]; '- но предупреждение все еще не отображается:/ –

ответ

1

Всегда проверяйте succeeded параметров. Как и в случае с API Apple, это немного лучше. Вот как я это сделаю. Кроме того, поскольку вы ориентируетесь на iOS8, я настоятельно рекомендую использовать новый API UIAlertController.

PFInstallation *currentInstallation = [PFInstallation currentInstallation]; 
[currentInstallation addUniqueObject:channel forKey:@"channels"]; 
[currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
    NSLog(@"%@", [error localizedDescription]); // DEBUG 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     UIAlertController* alert; 

     if (succeeded && !error) { 
      // Success Alert 
      alert = [UIAlertController alertControllerWithTitle:@"Success" 
                 message:nil 
               preferredStyle:UIAlertControllerStyleAlert]; 
     } else { 
      // Error Alert 
      alert = [UIAlertController alertControllerWithTitle:@"Error" 
                 message:nil 
               preferredStyle:UIAlertControllerStyleAlert]; 
     } 

     UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" 
                   style:UIAlertActionStyleDefault 
                   handler:^(UIAlertAction * action) { 
                    [alert dismissViewControllerAnimated:YES completion:nil]; 
                   }]; 
     [alert addAction:defaultAction]; 

     [self presentViewController:alert animated:YES completion:nil]; 
    }); 
}]; 
+0

Если я также поддерживаю iOS 7, мне нужно резерв для предупреждения - не так ли? –

+0

Правильно, 'UIAlertController' не портирован. – Simon

+0

Хорошо - спасибо за помощь! –

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