既然已经介绍完了基本信息,是时候动手写代码了。我们这里主要会用到PFObject、PFUser、PFACL和PFRole这几个类。
1. 存储对象
要用Parse保存内容到云端都是通过PFObject来做到的。用特定的类名创建一个PFObject对象,以键值对形式(想想NSMutableDictionary)添加所需的数据,然后调用save方法。这里有个例子。
使用Parse创建对象并将其保存到云端
- PFObject *object = [PFObject objectWithClassName:@"UserProfile"];
- [object setValue:@"Mugunth" forKey:@"userName"];
- [object setValue:@"mugunthkumar" forKey:@"twitter"];
- [object setValue:@"imk.sg" forKey:@"skype"];
- [object setValue:@"blog.mugunthkumar.com" forKey:@"blog"];
- [object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
- if(!succeeded) {
- NSLog(@"%@", error);
- }
- }];
只需做一些很小的改动就可以把同一个UserProfile对象和一个用户账户(PFUser)连接。这意味着只有登录用户才能读写对象。还有,通过访问控制类PFACL,Parse允许开发者对访问权限有完全的控制。现在来看看如何使用这两个类。
- [PFUser logInWithUsernameInBackground:@"mugunth" password:@"magic"
- block:^(PFUser *user, NSError *error) {
- if(!user) {
- NSLog(@"%@", error);
- return;
- }
- PFACL *acl = [PFACL ACLWithUser:user];
- PFObject *object = [PFObject objectWithClassName:@"UserProfile"];
- [object setACL:acl];
- [object setValue:@"Mugunth" forKey:@"userName"];
- [object setValue:@"mugunthkumar" forKey:@"twitter"];
- [object setValue:@"imk.sg" forKey:@"skype"];
- [object setValue:@"blog.mugunthkumar.com" forKey:@"blog"];
- [object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
- if(!succeeded) {
- NSLog(@"%@", error);
- }
- }];
- }];
除了开始的用户登录和后面创建访问控制列表对象之外,代码几乎是一样的。运行以上代码,应该能在数据浏览器中看到这些对象,如图25-2所示。

图25-2 数据浏览器显示对象
2. 获取对象
从云端获取对象非常简单,用PFQuery对象就能做到。
使用PFQuery从Parse获取对象
- PFQuery *query = [PFQuery queryWithClassName:@"UserProfile"];
- [query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError
- *error) {
- NSLog(@"%@", object);
- }];
执行上面的代码就会看到保存的用户信息对象。甚至可以在PFQuery对象上应用过滤器来过滤对象。
- [query whereKey:@"twitter" equalTo:@"mugunthkumar"];
3. 离线模式
Parse的强大之处在于能够离线工作并保存对象。当设备重新上线之后,Parse框架自动将变更同步到云端。
开发者只需用saveEventually代替saveInBackgroundWithBlock:。
有了这些特性,最累的活也不过是把必须保存到云端的对象转换成一个PFObject对象。可以手动做这些事,即为所有的模型都写一个saveToParse方法。还有一个简洁且优雅的方法是利用Objective-C的运行时方法。MKFoundation库有一个运行时方法可以把对象转换成PFObject对象,就是利用了Objective-C强大的运行时方法。
MKFoundation是GitHub上的库,能让开发者把应用中的任何对象转换成PFObject对象。MKFoundation用Objective-C运行时方法来检查对象并创建PFObject。只需对PFObject做一些小小的改动(比如改变用户/身份),应用即刻就能具备Parse后端支持。
摘自:移动开发网
浙公网安备 33010602011771号