Проблема с Parse.com: почему не удается сохранить PFRelation?

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

Вот ошибка:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString parseClassName]: unrecognized selector sent to instance 0x16552d80'

Мой файл .m:

@implementation TestViewController

    - (void)viewDidLoad
    {
    [super viewDidLoad];

    self.mainArray = [[NSMutableArray alloc] initWithObjects:@"User", nil];
    self.currentUser = [PFUser currentUser];


    }

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return [self.mainArray count];
}

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    DevTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"thisCell"];

    cell.usernameLabel.text = [self.mainArray objectAtIndex:indexPath.row];
    [cell.addButton addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside];


    return cell;
}

- (IBAction)addTheContact:(id)sender {


    PFUser *theNewContact = [self.mainArray firstObject];
    NSLog(@"username: %@",theNewContact);
    PFRelation *contactList = [self.currentUser relationforKey:@"contactList"];
    [contactList addObject:theNewContact];
    [self.currentUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (error){
            NSLog(@"Error %@ %@", error, [error userInfo]);
        }
    }];
}

- (IBAction)searchButton:(id)sender {

    NSString *searchResult = [self.searchField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    PFQuery *query = [PFUser query];
    [query whereKey:@"username" equalTo:searchResult];
    [query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
        if (object) {
            PFUser *user = (PFUser *)object;
            NSLog(@"Username: %@", user.username);
            if (self.mainArray.count > 0) {
                [self.mainArray replaceObjectAtIndex:0 withObject:user.username];
            } else {
                [self.mainArray addObject:user.username];
            }

            [tableView reloadData];

        }
    }];
}

- (IBAction)logout:(id)sender {
    [PFUser logOut];
    [self performSegueWithIdentifier:@"showLogin" sender:self];
}
- (void)didTapButton:(id)sender {

    // Cast Sender to UIButton
    UIButton *button = (UIButton *)sender;

    // Find Point in Superview
    CGPoint pointInSuperview = [button.superview convertPoint:button.center toView:tableView];

    // Infer Index Path
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:pointInSuperview];

    NSLog(@"Hello World");
}
  1. Моя вторая попытка:

    - (IBAction)addTheContact:(id)sender { self.contactRecipient = [self.mainArray firstObject]; PFQuery *queryContact = [PFUser query]; [queryContact whereKey:@"username" equalTo:self.contactRecipient]; PFObject *recentContact = [queryContact getFirstObject]; PFUser *theNewContact = [recentContact objectForKey:@"user"]; PFRelation *contactList = [self.currentUser relationforKey:@"contactList"]; [contactList addObject:theNewContact]; [self.currentUser saveInBackground]; NSLog(@"Bug test log"); }

и это ошибка:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]'
*** First throw call stack:
(0x3052fe8b 0x3a82a6c7 0x304690cb 0x30472a51 0x1142c7 0xdecfb 0x32cea55f 0x32cea4fb 0x32cea4cb 0x32cd60f3 0x32ce9f13 0x32ce9bdd 0x32ce4c09 0x32cb9f59 0x32cb8747 0x304faf27 0x304fa3ef 0x304f8bdf 0x30463541 0x30463323 0x3519a2eb 0x32d1a1e5 0xddbc9 0x3ad23ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException 

person rihe    schedule 17.05.2014    source источник


Ответы (1)


Вы инициализируете массив строкой

self.mainArray = [[NSMutableArray alloc] initWithObjects:@"User", nil];

а затем пытается работать с firstObject (строкой), как будто это PFUser

PFUser *theNewContact = [self.mainArray firstObject];

и

self.contactRecipient = [self.mainArray firstObject];
person Sash Zats    schedule 17.05.2014
comment
И что мне делать вместо строк? - person rihe; 18.05.2014
comment
Если вы обращаетесь к массиву и надеетесь получить пользовательский объект, вы должны добавить пользовательский объект, а не строку - person Sash Zats; 18.05.2014