一旦我查询了另一个类,parse.com试图从User类中获取一个值

时间:2014-01-26 16:28:51

标签: ios parse-platform

我正在尝试使用表格视图中的显示名称发布用户位置。但我在数据浏览器中获取的是正确的帖子,但显示名称为空白 我正在尝试查询位置类以及具有用户显示名称的用户类

// Configure the new event with information from the location.

CLLocationCoordinate2D coordinate = [location coordinate];
PFGeoPoint *geoPoint = [PFGeoPoint geoPointWithLatitude:coordinate.latitude    longitude:coordinate.longitude];
PFObject *object = [PFObject objectWithClassName:@"Location"];
[object setObject:geoPoint forKey:@"location"];
PFObject *UserObject = [PFObject objectWithClassName:@"_User"];
[[UserObject objectForKey:@"postedUser"] objectForKey:@"displayName"];

// Create relationship
[object setObject:[PFUser currentUser] forKey:@"postedUser"];

[UserObject setObject:[PFUser currentUser] forKey:@"displayName"];


PFACL *locatinACL = [PFACL ACLWithUser:[PFUser currentUser]];
[locatinACL setPublicReadAccess:YES];


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

  }
}];
任何人都知道我做错了什么。显示名称在displayName下的用户类中,我需要在displayName

下的新帖子中

用户保存在表格中保存的详细信息,该表格必须在注册后填写额外的详细信息

NSString *saveName = UserNameText.text;
NSString *saveEmail = EmailAddressText.text;
NSString *saveMobile = MobileText.text;
NSString *saveAdd1 = Address1Text.text;
NSString *saveAdd2 = Address2Text.text;
NSString *savePostCode = PostCodeText.text;
NSString *saveCustTax = TaxiOrCust.text;



currentUserSave[@"displayName"] = saveName;
currentUserSave[@"email"] = saveEmail;
currentUserSave[@"mobile"] = saveMobile;
currentUserSave[@"address1"] = saveAdd1;
currentUserSave[@"address2"] = saveAdd2;
currentUserSave[@"postCode"] = savePostCode;
currentUserSave[@"customer"] = saveCustTax;

1 个答案:

答案 0 :(得分:0)

原谅长期答案......我认为我对你的数据结构以及你想要实现的目标仍然有点不清楚,所以如果我澄清你现有的代码实际上在做什么,它似乎最有意义。希望这可以帮助您做出任何必要的调整。

您目前正在做什么

PFObject *object = [PFObject objectWithClassName:@"Location"];
[object setObject:geoPoint forKey:@"location"];

在这里,您要创建 Location对象,并将您创建的地理位置设为location。如果您想要更新现有的Location对象,则必须从Parse中获取该对象(除非您已经拥有变量/属性)。

PFObject *UserObject = [PFObject objectWithClassName:@"_User"];

在这里,您要创建一个用户对象。我怀疑你想要使用当前用户,而不是创建一个新用户。用户还有一个特定的Parse对象:PFUser - 您稍后将使用它。

[[UserObject objectForKey:@"postedUser"] objectForKey:@"displayName"];

此行没有任何作用。您正在获取UserObject的{​​{1}}属性,然后获取该用户的postedUser属性。我认为这不是你想要的。

displayName

然后通过设置两个属性指向当前用户来更新您创建的两个新对象(您的位置和用户对象)。

[object setObject:[PFUser currentUser] forKey:@"postedUser"];
[UserObject setObject:[PFUser currentUser] forKey:@"displayName"];

这两行创建了一个新ACL,它为当前用户提供写访问权限,并为其他所有人提供读访问权限。但是,您不会将此应用于新的位置对象。

PFACL *locatinACL = [PFACL ACLWithUser:[PFUser currentUser]];
[locatinACL setPublicReadAccess:YES];

最后,这将保存您的新[object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (succeeded) { } }]; 对象。但是,您创建的新Location对象将不会保存,因为没有其他任何内容可以参考,并且您不会在其上调用保存。

您可能尝试做什么

我认为您正在编写的代码可能会被缩减为以下内容:

User

这更接近你想要的吗?