0

我正在创建一个新的 PFObject,在上面设置一些对象,然后像这样保存它:

// Add a new 'madeTitle' Activity Object
PFObject* madeTitleActivity = [PFObject objectWithClassName:kPAPActivityClassKey];
[madeTitleActivity setObject:aComment forKey:kWSActivityCommentKey];
[madeTitleActivity setObject:self.photo forKey:kPAPActivityPhotoKey];
[madeTitleActivity setObject:[PFUser currentUser] forKey:kPAPActivityFromUserKey];
[madeTitleActivity setObject:[aComment objectForKey:kWSCommentsFromUserKey] forKey:kPAPActivityToUserKey];
[madeTitleActivity setObject:kPAPActivityTypeMadeTitle forKey:kPAPActivityTypeKey];

// ACL's
PFACL *ACL = [PFACL ACLWithUser:[PFUser currentUser]];
[ACL setPublicReadAccess:YES];
[ACL setWriteAccess:YES forUser:[PFUser currentUser]];
madeTitleActivity.ACL = ACL;


[madeTitleActivity saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {

    if (succeeded) {
        // ...
    }
    else {
        NSLog(@"madeTitleActivity saveInBackgroundWithBlock -- error = %@", error);
    }
}];

但我收到以下错误:

2013-10-22 10:55:12.546 WSPhoto[2064:7b4b] Error: object not found for update (Code: 101, Version: 1.2.6)
2013-10-22 10:55:12.552 WSPhoto[2064:707] madeTitleActivity saveInBackgroundWithBlock -- error = Error Domain=Parse Code=101 "The operation couldn’t be completed. (Parse error 101.)" UserInfo=0x8966c0 {code=101, error=object not found for update}

我之前处理过这个错误,但它一直在更新对象和有 ACL 问题。创建和保存新对象时,我没有此错误代码。

我已经检查了我正在设置的所有对象,它们都返回了有效的对象。

我还成功保存了其他一些 Activity 对象,据我所知,代码看起来完全一样。


编辑:扩展代码,包括 makeTitleActivity 代码嵌套的 CloudCode 函数调用

 [PFCloud callFunctionInBackground:@"setCommentIsTitle"
                   withParameters:@{@"userID":[[PFUser currentUser] objectId],
                     @"objectId":[aComment objectId],
                     @"photoObjectId":[self.photo objectId],
                     @"previousCommentObjectId":[previousTitleComment objectId],
                     @"isTitle":[NSNumber numberWithBool:YES],
                     @"previousCommentObjectIsTitle":[NSNumber numberWithBool:NO]}
                                block:^(NSMutableDictionary *results , NSError *error) {

    if (!error) {
        // Add a new 'madeTitle' Activity Object
        PFObject* madeTitleActivity = [PFObject objectWithClassName:kPAPActivityClassKey];
        [madeTitleActivity setObject:aComment forKey:kWSActivityCommentKey];
        [madeTitleActivity setObject:self.photo forKey:kPAPActivityPhotoKey];
        [madeTitleActivity setObject:[PFUser currentUser] forKey:kPAPActivityFromUserKey];
        [madeTitleActivity setObject:[aComment objectForKey:kWSCommentsFromUserKey] forKey:kPAPActivityToUserKey];
        [madeTitleActivity setObject:kPAPActivityTypeMadeTitle forKey:kPAPActivityTypeKey];

        // ACL's
        PFACL *madeTitleACL = [PFACL ACLWithUser:[PFUser currentUser]];
        [madeTitleACL setPublicReadAccess:YES];
        [madeTitleACL setWriteAccess:YES forUser:[PFUser currentUser]];
        madeTitleActivity.ACL = madeTitleACL;

        [madeTitleActivity saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {

            NSLog(@"madeTitleActivity saveInBackgroundWithBlock -- called");

            if (succeeded) {
               // ..
            }
            else {
                NSLog(@"madeTitleActivity saveInBackgroundWithBlock -- error = %@", error);
            }
        }];
    }

    else {
        NSLog(@"etCommentIsTitle PFCloud  -- error = %@", error);
    }
}];
4

3 回答 3

1

这个:

错误:找不到要更新的对象

表示您正在尝试保存一个与其他尚未保存的对象有关系的对象。你不能这样做,因为它不存在。

您需要找出它的其他对象并确保首先保存它。


请注意,您可以使用其中一种saveAll...方法批量保存许多新对象,既可以避免此类问题,又可以获得一些效率提升。

于 2013-10-22T18:44:10.727 回答
1

还提醒不要在尝试保存新对象时尝试设置 ObjectId。这通常不是问题,除非您不小心炸毁了您的数据库并尝试将其推回原处。

于 2016-01-15T05:57:37.727 回答
0

它与 ACL 有关,请检查您的仪表板中的数据列“ACL”

写入应锁定特定的用户 ID。您需要从仪表板更改它以更新其权限

{"*":{"write":true,"read":true}}

您可以在此查看有关我的回复的更多详细信息

于 2014-07-11T09:22:08.073 回答