2013-08-28 3 views
0

метод в одном классе:Ошибка: нет результатов, удовлетворяющих запрос

- (IBAction)createGroup:(id)sender { 
    PFObject *message = [PFObject objectWithClassName:@"Messages"]; 
    [message setObject:self.recipients forKey:@"recipientIds"]; 
    [message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
     if (error) { 
      NSLog(@"Error %@ %@", error, [error userInfo]); 
     } 
     else [self performSegueWithIdentifier:@"showDate" sender:self]; 
    }]; 
} 

то в другом:

else { 
      PFQuery *message = [PFQuery queryWithClassName:@"Message"]; 
       [message getObjectInBackgroundWithId:@"message" block:^(PFObject *message,   NSError *error) { 
       [message setObject:file forKey:@"file"]; 
       [message setObject:fileType forKey:@"fileType"]; 
       [message setObject:[[PFUser currentUser] objectId] forKey:@"senderId"]; 
       [message setObject:[[PFUser currentUser] username] forKey:@"senderName"]; 
       [message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 

Когда я запустить приложение, нет никаких ошибок или предупреждений, но он заканчивается бросать ошибка при обращении к запросу. Я уверен, что это что-то простое, что я забываю, поскольку неделю назад я только что вытащил свою программную вишню. Любая помощь будет принята с благодарностью. Ура!

+0

Это определенно что-то с вашей конфигурацией разбора. Вероятно, вы должны сначала проверить их страницы поддержки/FAQ/форумы. –

+0

Я искал последние 4 часа и пробовал все, что мог придумать. Чувствовать себя немного обескураженным. спасибо, хотя –

+0

Вы можете получить кого-нибудь здесь, кто знает разбор, я добавил тег, чтобы кто-то знал. Можете ли вы получить базовый код синтаксического анализа типа «начальный»? Я предполагаю, что это где-то в некоторой конфигурации. –

ответ

0

getObjectInBackgroundWithId:block: ожидает идентификатор объекта Parse для параметра objectId.

Если вы просто создаете объект и затем пытаетесь передать его на контроллер детского представления, лучше пройти через фактический PFObject.

//In your header 
@property (nonatomic, strong) PFObject *message; 

//Implementation 
(IBAction)createGroup:(id)sender { 
    PFObject *message = [PFObject objectWithClassName:@"Messages"]; 
    [message setObject:self.recipients forKey:@"recipientIds"]; 
    [message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
     if (error) { 
      NSLog(@"Error %@ %@", error, [error userInfo]); 
     } 
     else { 
     self.message = message; 
     [self performSegueWithIdentifier:@"showDate" sender:self]; 
     } 
    }]; 
} 

Вы должны реализовать prepareForSeque:sender: в контроллере представления, а затем передать PFObject до контроллера представления ребенка:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"showDate"]) { 
    YourChildViewController *destViewController = segue.destinationViewController; 
    destViewController.message = self.message; 
    } 
} 

Затем в контроллере представления ребенка:

//In the header, create a property to hold the message object 
@property (nonatomic, strong) PFObject *message; 

//In the body, you can use self.message 
    [self.message setObject:file forKey:@"file"]; 
    [self.message setObject:fileType forKey:@"fileType"]; 
    [self.message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
    ... 
+0

ОК, я получаю предупреждение «ожидаемое выражение» в строке для оператора else. Если self.objectId будет перемещен вниз, чтобы быть включенным в оператор else? –

+0

Ах, извините. Вы правы - это должно быть в блоке else. Вам также нужно будет добавить свойство вашего класса для хранения идентификатора объекта (чтобы вы могли сделать это с помощью self.objectId). Я отредактировал свой ответ, чтобы показать это. – alxmitch

+0

Я ценю вашу помощь. Теперь приложение заканчивается на том же месте, и я получение этого броска «Не могу выполнить запрос сравнения для типа: (null)» Я думаю, что я не совсем понимаю. –