如何发送数组列表以解析和检索它并在 UItableView 中显示它?
Posted
技术标签:
【中文标题】如何发送数组列表以解析和检索它并在 UItableView 中显示它?【英文标题】:How can I send a list of array to parse and retrieve it and show it in a UItableView? 【发布时间】:2015-05-26 13:03:37 【问题描述】:我正在ios中开发一个聊天应用程序。我需要将currentUser的朋友添加到一个数组中,然后将其发送到解析并保存为数组。 因为用户应该只添加一次他们的朋友,然后我需要在那里做一些功能。 那么如何检查用户是否已添加为朋友以及如何检索朋友数组? 如果有人能给我一些建议,那么这对我来说会很有帮助,因为我是 iOS 和 Parse 的新手。
【问题讨论】:
你使用用户指针数组。 @MuhammadAdnan 抱歉,我无法理解您的建议。您能详细说明一下吗? 如果是单用户聊天,可以从好友表中获取好友信息。否则,您必须保留 PFuser 数组(参与聊天)。解析聊天表中的 1 列数组类型 @MuhammadAdnanyeah 我创建了一个名为 Friends 的列,但我不知道如何过滤已添加的用户 您在一个问题中提出了很多不同的问题。如果你把它分解,答案已经在这里了。 【参考方案1】:您可以在 Parse 上创建一个联接表,其中存储谁是谁的朋友。
使用PFQuery
,您可以过滤它以仅获取与某个人相关的朋友。你可以称这个表为“Friendship”,它存储了 2 个 User 对象,意思是,他们是朋友。
更新
您将拥有一个名为 Friendship
的 PFObject 子类。 Friendship
对象将包含 2 个东西,一个是 User
,另一个是 Friend
。两者都应该是PFUser
类型。
你不需要进入 parse 创建连接表,如果你在代码中创建一个新对象并保存它,parse 会为它创建一个表。因此,如果您创建第一个 Friendship
对象并保存它,则 parse 会将其保存在它自己的 Friendships 表中。
保存友谊就像这样:
- (void)addFriend:(PFUser *)friend
Friendship *friendship = [[Friendship alloc] init];
friendship.user = self.user;
friendship.friend = friend;
[friendship saveInBackground];
这只是一个简单的例子。
从用户那里获取朋友列表:
- (void)fetchFriendsList
//create a query for friendships
PFQuery *friendsQuery = [[PFQuery alloc] initWithClassName:[Friendship parseClassName]];
//filter it to find only friends for the user
[friendsQuery whereKey@"user" equalTo:self.user];
[friendsQuery findObjectsInBackgroundWithBlock:^(NSArray *friendships, NSError *error)
if (!error)
//do something with the list of friendships
self.friends = [friendships valueForKey:@"friend"];
//the above line create an array with only the friend value of each Friendship object inside the array
else
NSLog(@"error fetching friends: %@", [error description]);
];
查看好友是否已添加/存在:
- (void)friendExists:(PFUser *)friend withCompletionBlock:(void (^)(BOOL))completionBlock
//create a query for friendships
PFQuery *friendsQuery = [[PFQuery alloc] initWithClassName:[Friendship parseClassName]];
//filter it to find only friends for the user
[friendsQuery whereKey@"user" equalTo:self.user];
[friendsQuery whereKey@"friend" equalTo:friend];
[friendsQuery findObjectsInBackgroundWithBlock:^(NSArray *friendships, NSError *error)
if (!error)
//if we get one result here, it means it already exists
BOOL alreadyExists = friendship.count > 0;
if (completionBlock) //making sure there is a block as parameter
completionBlock(alreadyExists);
else
NSLog(@"error fetching friends: %@", [error description]);
];
您需要在其中设置一个块来处理结果,因为发出 PFQuery 请求不是即时的。
另外,当添加更多whereKey:
时,它们被视为“AND”,这意味着它只会返回符合所有whereKeys的对象。
基本上就是这样。我假设您知道如何子类化 PFObject,如果不知道,您可以查看documentation。
【讨论】:
你能给我一些链接或者给我一些关于这个的例子吗?以上是关于如何发送数组列表以解析和检索它并在 UItableView 中显示它?的主要内容,如果未能解决你的问题,请参考以下文章
如何以单选按钮格式显示问题和答案的数组列表?使用 JSP 和 servlet