【问题标题】:(parse) getting error when updating pfobject(解析)更新 pfobject 时出错
【发布时间】:2014-10-11 05:47:57
【问题描述】:

无论多么简单,我仍然在努力更新 PFObject 数据

-(IBAction)postMessageTapped:(id)sender{
    [self hideTextField:_messageTextField];
    NSMutableArray *myNewMessageArray=[[NSMutableArray alloc]init];
    [myNewMessageArray insertObject:_messageTextField.text atIndex:0];
    [myNewMessageArray insertObject:[PFUser currentUser] atIndex:1];


    PFQuery *query = [PFQuery queryWithClassName:ClassName];

    [query getObjectInBackgroundWithId:currentId block:^(PFObject *object, NSError *error) {


        object[messagingArray] = myNewMessageArray;
        [object saveInBackground];

    }];
}

目的是从文本字段和当前用户名中获取消息字符串,并将其放入一个数组中,然后更新解析数据库中存在的数组。不过,

Cannot do a comparison query for type: (null)

当用户点击发布消息的按钮时出现。

有人有可能的解决方案吗?

编辑:

    PFQuery *query = [PFQuery queryWithClassName:ClassName];


    [query whereKey:@"location" nearGeoPoint:locationOfSelectedPin];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)  {
        if (!objects) {
            NSLog(@"The getFirstObject request failed.");
        } else {
            for(PFObject *objectTest in objects){
            NSLog(@"Successfully retrieved the object.");
            objectTest[@"messagingArray"]=myNewMessageArray;
            [objectTest saveInBackground];
            }
        }
    }];

我也尝试使用它来更新我的数据,“成功检索到的对象”被打印了 3 次,但随后是三行“错误,找不到更新的对象”。

【问题讨论】:

    标签: ios objective-c parse-platform


    【解决方案1】:

    检查您在哪里设置 objectId - 此错误意味着它无法获取对象,因为您将 nil 值传递给数据库进行查找。

    这里有一些处理异常的代码:

    if (!currentId) {
        NSLog(@"Your currentId object is nil! Check your assignment.");
    }
    else {
        PFQuery *query = [PFQuery queryWithClassName:ClassName];
        [query getObjectInBackgroundWithId:currentId block:^(PFObject *object, NSError *error) {
        object[messagingArray] = myNewMessageArray;
        [object saveInBackground];
        }];
    }
    

    【讨论】:

    • 它似乎是零...我正在使用 currentId=[NSString stringWithFormat:object[@"objectId"]];在后台查询中的先前查找对象中设置当前 id 字符串。
    • 您是否嵌套此查询以仅在该查询返回后触发?如果没有,那么您可能会在其他查询有机会找到并设置 currentId 之前调用它。尝试嵌套它以仅在返回后触发:)
    • 是的,我确保在此查询中使用之前设置了对象 ID。我尝试了另一种方法,但也失败了(见编辑)
    • parse.com 是否与消息一起返回错误代码?可能是 ACL 表有问题,错误码可以帮助诊断。
    猜你喜欢
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2015-10-07
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多