欢迎使用 LeanCloud。本教程将以一个发布商品的场景为例讲解 LeanCloud 的数据存储 LeanStorage 的核心使用方法。
您可以以下面三种方式通过提供的示例来熟悉基本功能:
打开 Demo 后首先看到的是登录界面。然后点击「注册」来新建一个用户账号。
LCUser 是用来描述一个用户的特殊对象,与之相关的数据都保存在 _User 数据表中。它和下面所讲到的 LCObject 本质上是相同的。
LCUser
_User
LCObject
输入用户名、密码和邮箱,点击注册,成功后在你的控制台的 _User 表里,会对应地生成一条用户数据,具体代码如下:
NSString *username = self.usernameTextField.text; NSString *password = self.passwordTextField.text; NSString *email = self.emailTextField.text; if (username && password && email) { // LeanCloud - 注册 // https://leancloud.cn/docs/leanstorage_guide-objc.html#用户名和密码注册 LCUser *user = [LCUser user]; user.username = username; user.password = password; user.email = email; [user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (succeeded) { [self performSegueWithIdentifier:@"fromSignUpToProducts" sender:nil]; } else { NSLog(@"注册失败 %@", error); } }]; }
如果已有账号,那就在登录页面,通过以下代码完成登录操作:
NSString *username = self.usernameTextField.text; NSString *password = self.passwordTextField.text; if (username && password) { // LeanCloud - 登录 // https://leancloud.cn/docs/leanstorage_guide-objc.html#登录 [LCUser logInWithUsernameInBackground:username password:password block:^(LCUser *user, NSError *error) { if (error) { NSLog(@"登录失败 %@", error); } else { [self performSegueWithIdentifier:@"fromLoginToProducts" sender:nil]; } }]; }
登录成功后,假设我们要发布的商品具有以下属性:
我们可以将一件商品,对应到一个 LCObject 的实例。LCObject 是 LeanCloud 提供的面向对象存储模型的核心概念,一个 Object 可以拥有若干属性,每一个属性就是一个键值对(key-value)。像上面的商品属性,我们可以设计成如下的存储 schema:
这里还有两个属性比较特殊:
Pointer 类型,本质上是指向另外一张表的指针。在这个案例里,owner 字段,就是 Product 表里,用来指向 _User 表里一名用户的指针。
Pointer
owner
Product
File 类型,对应着 LCFile。 LCFile 是用来描述一个文件的特殊对象,与之相关的数据都保存在 _File 数据表中。
File
LCFile
_File
依次输入商品标题、商品描述和商品价格,并从相册挑选一张封面图片后,点击发布,成功后,在你的控制台里会新增一张名为 Product 的表,同时表里会有一条新数据。具体代码如下:
NSString *title = self.titleTextField.text; NSNumber *price = [NSNumber numberWithInt:[self.priceTextField.text intValue]]; NSString *description = self.descriptionTextView.text; // 保存商品信息 // LeanCloud - 构建图片 // https://leancloud.cn/docs/leanstorage_guide-objc.html#从数据流构建文件 NSData *data = UIImagePNGRepresentation(self.selectedImage); LCFile *file = [LCFile fileWithData:data]; // LeanCloud - 获取当前用户 // https://leancloud.cn/docs/leanstorage_guide-objc.html#当前用户 LCUser *currentUser = [LCUser currentUser]; // LeanCloud - 保存对象 // https://leancloud.cn/docs/leanstorage_guide-objc.html#对象 LCObject *product = [LCObject objectWithClassName:@"Product"]; [product setObject:title forKey:@"title"]; [product setObject:price forKey:@"price"]; // owner 字段为 Pointer 类型,指向 _User 表 [product setObject:currentUser forKey:@"owner"]; // image 字段为 File 类型 [product setObject:file forKey:@"image"]; [product setObject:description forKey:@"description"]; [product saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (succeeded) { [self.indicatorView setHidden:YES]; [self dismissViewControllerAnimated:YES completion:nil]; } else { NSLog(@"保存新物品出错 %@", error); } }];
发布成功后,我们回到主页面。对 Product 表进行查询,然后展示出来。
LCQuery 是构建针对 LCObject 查询的基础类。
LCQuery
还记得前面提到的 Pointer?Product 表里的 owner 字段,就是一个 Pointer 型字段,它仅包含 3 个键值对的信息,数据形式为:
"owner": { "__type": "Pointer", "className": "_User", "objectId": "57e264c667f3560056c3cb1e" },
而如果想在查询 Product 表时,同时获取到 _User 表的其它字段信息呢?这样的话,就需要用到 include 关键字。
include
请看示例,通过如下代码实现查询过程:
// LeanCloud - 查询 - 获取商品列表 // https://leancloud.cn/docs/leanstorage_guide-objc.html#查询 LCQuery *query = [LCQuery queryWithClassName:@"Product"]; [query orderByDescending:@"createdAt"]; // owner 为 Pointer,指向 _User 表 [query includeKey:@"owner"]; // image 为 File [query includeKey:@"image"]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (!error) { self.products = objects; [self.tableView reloadData]; } }];
可以使用如下代码:
// LeanCloud - 退出登录 // https://leancloud.cn/docs/leanstorage_guide-objc.html#登出 [LCUser logOut];
我们在这次的教程中,逐一地去熟悉几个核心的概念:LCUser、LCObject、LCFile、Pointer、LCQuery 和 include。在理解了这些基础知识后,就可以开始基于 LeanCloud 的快速开发了。
如果你在后续存储模块的开发过程中,遇到任何问题,请查阅以下进阶文档的相关部分:Objective-C 数据存储开发指南。
数据存储入门教程 · Objective-C
欢迎使用 LeanCloud。本教程将以一个发布商品的场景为例讲解 LeanCloud 的数据存储 LeanStorage 的核心使用方法。
你将学到什么
如何学习
您可以以下面三种方式通过提供的示例来熟悉基本功能:
要做的准备
主要步骤
1、用户注册和登录
打开 Demo 后首先看到的是登录界面。然后点击「注册」来新建一个用户账号。
LCUser
是用来描述一个用户的特殊对象,与之相关的数据都保存在_User
数据表中。它和下面所讲到的LCObject
本质上是相同的。输入用户名、密码和邮箱,点击注册,成功后在你的控制台的
_User
表里,会对应地生成一条用户数据,具体代码如下:如果已有账号,那就在登录页面,通过以下代码完成登录操作:
2、发布第一件商品
登录成功后,假设我们要发布的商品具有以下属性:
我们可以将一件商品,对应到一个
LCObject
的实例。LCObject
是 LeanCloud 提供的面向对象存储模型的核心概念,一个 Object 可以拥有若干属性,每一个属性就是一个键值对(key-value)。像上面的商品属性,我们可以设计成如下的存储 schema:这里还有两个属性比较特殊:
Pointer
类型,本质上是指向另外一张表的指针。在这个案例里,owner
字段,就是Product
表里,用来指向_User
表里一名用户的指针。File
类型,对应着LCFile
。LCFile
是用来描述一个文件的特殊对象,与之相关的数据都保存在_File
数据表中。依次输入商品标题、商品描述和商品价格,并从相册挑选一张封面图片后,点击发布,成功后,在你的控制台里会新增一张名为
Product
的表,同时表里会有一条新数据。具体代码如下:3、展示商品列表
发布成功后,我们回到主页面。对
Product
表进行查询,然后展示出来。LCQuery
是构建针对LCObject
查询的基础类。还记得前面提到的
Pointer
?Product
表里的owner
字段,就是一个Pointer
型字段,它仅包含 3 个键值对的信息,数据形式为:而如果想在查询
Product
表时,同时获取到_User
表的其它字段信息呢?这样的话,就需要用到include
关键字。请看示例,通过如下代码实现查询过程:
4、退出登录
可以使用如下代码:
更进一步
我们在这次的教程中,逐一地去熟悉几个核心的概念:
LCUser
、LCObject
、LCFile
、Pointer
、LCQuery
和include
。在理解了这些基础知识后,就可以开始基于 LeanCloud 的快速开发了。如果你在后续存储模块的开发过程中,遇到任何问题,请查阅以下进阶文档的相关部分:Objective-C 数据存储开发指南。