iOS开发仿微信(WeChat)系列(四)

WzxJiang

编辑:Bison
投稿:WzxJiang

"今天刚回家,中午、晚上吃了两趟酒席,再加上的确被LearnCloud坑到了…所以今天加的内容不多:"


1

今天完成的部分

- 导入了LeadCloud的存储(不会后端)以及IM(尝尝鲜)的动态库

- 写了登录和注册的方法(开始加网络了)

对于一个不会后端的iOS独立开发来说, LearnCloud还是挺好的,够免费,够简单。这里我就不讲怎么导入了它的动态库了,直接讲讲我怎么通过它写的登录注册,以及遇到的坑.

  • 我们一步一步来

创建一个NSObject类:WWeChatApi.

  • 创建一个单例
+ (WWeChatApi *)giveMeApi
{
    static WWeChatApi * api = nil;
    if (api == nil) {
        api = [[WWeChatApi alloc]init];
    }
    return api;
}
  • 先写登录方法(坑就在这)


- (void)loginWithUserName:(NSString *)userName andPassWord:(NSString *)passWord andSuccess:(void (^)(id))successBlock andFailure:(void (^)(NSError *))failureBlock
{
    AVQuery *query = [AVQuery queryWithClassName:@"_User"];

    [query whereKey:@"username" equalTo:userName];

    [query whereKey:@"password" equalTo:passWord];

    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            if (objects.count>0)
            {
                successBlock(nil);
            }
        } else {
            failureBlock(error);
        }
    }];
}


这里的AVQuery是LearnCloud的方法,暂时不管。

1

//这里也是LearnCloud动态库的方法
//@"username"的值等于@"WzxJiang" And @"password"的值等于@"123456"
[query whereKey:@"username" equalTo:@“WzxJiang”];

[query whereKey:@"password" equalTo:@"123456"];


//然后通过这个方法获取符合的AVObject Arr
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        if (objects.count>0)
        {
            successBlock(nil);
        }
    } else {
        failureBlock(error);
    }
}];

讲道理的话这里是没有问题的,能取出唯一符合的一个AVObject,但是这里竟然取出来是空!

调试很久后发现。。

[query whereKey:@"password" equalTo:@"123456"]


这里的password竟然不可以用whereKey: equalTo方法…
你这肯定是逗我!自带password不能判断,那我怎么做登录判断!

解决办法:在LearnCloud后台中自己加了个passWord的类,用这个来储存密码,(password竟然还不能删)

  • 注册


- (void)registerWithUserName:(NSString *)userName andPassWord:(NSString *)passWord andSuccess:(void (^)(id response))successBlock andFailure:(void (^)(NSError * error))failureBlock
{
    AVObject * user = [AVObject objectWithClassName:@"_User"];

    user[@"username"] = userName;

    user[@"password"] = @"123";

    user[@"passWord"] = passWord;

    AVQuery *query = [AVQuery queryWithClassName:@"_User"];

    [query whereKey:@"username" equalTo:userName];

    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            if (objects.count == 0)
            {
                [user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
                    if (successBlock)
                    {
                    successBlock(nil);
                    }
                    else
                    {
                    failureBlock(error);
                    }
                }];
            
            }
            else
            {
                failureBlock(nil);
            }
            } else {
                failureBlock(error);
            }
        }];
}


这里的注册又是有个坑,

user[@"password"] = @"123",password


不给个值,不让注册…

好了今天就到这了!

目前的代码(将持续更新直至完成)
GitHub:WzxJiang

如果你有建议或者疑问欢迎评论!


博主app上线啦,快点此来围观吧

更多经验请点击

好文推荐:菜鸟程序员2015年年终总结


分享文章