iOS CoreData Xcode8 数据库进级搬迁 (Objective-C卡塔尔

作者:ca88编程

1.先看数据库截图

ca88编程 1数据.png

因为mongodb的数目貌似用cmd操作,不切合直观的看,所以能够下四个mongovue来方便眼睛看

地址:http://pan.baidu.com/s/1c15QWTy
设置都有表明

3、运维数据库

Paste_Image.png

第 4 步

在新数据库模型的实业里面增添属性

ca88编程 2

4.png

2.备选干活:先把那么些网址上具有电影的页面扒出来放到数据Curry

ca88编程 3代码.pngca88编程 4代码2.png

Image 043.png

那样大家服务器就打响的接上了数据库

后续

沾满本人早已拜会过的小说
iOS CoreData介绍和接收(以至一些注意事项)

Core Data入门

(Xcode 8.1 )CoreData 的使用

iOS CoreData版本升级和数据库迁移

ca88编程 5

末尾我们还必要创设三个文书夹Manager,里面成立三个接口IUserManager,二个达成接口的类UserManager

我们先轻易玩一下数据库

注册页面regin.vue的代码和登陆页面包车型客车代码大概,正是要和煦写2个验证,电话号码和确认密码的印证法规

regin.vue代码

<template>
  <el-main>
    <el-form 
      :model="ReginForm"
      ref="ReginForm"
      :rules="rule"
      class="regform"
      label-width="0">

      <h3>用户注册</h3>

      <el-form-item prop="username">
        <el-input 
          type="text"
          v-model="ReginForm.username"
          placeholder="用户名">
        </el-input>
      </el-form-item>

      <el-form-item prop="password">
        <el-input 
          type="password"
          v-model="ReginForm.password"
          placeholder="密码">
        </el-input>
      </el-form-item>

      <el-form-item prop="confirmpassword">
        <el-input 
          type="password"
          v-model="ReginForm.confirmpassword"
          placeholder="确认密码">
        </el-input>
      </el-form-item>

      <el-form-item prop="email">
        <el-input 
          type="email"
          v-model="ReginForm.email"
          placeholder="电子邮件">
        </el-input>
      </el-form-item>

      <el-form-item prop="tel">
        <el-input 
          type="text"
          v-model.number="ReginForm.tel"
          placeholder="电话号码">
        </el-input>
      </el-form-item>

      <el-form-item prop="name">
        <el-input 
          type="text"
          v-model="ReginForm.name"
          placeholder="昵称">
        </el-input>
      </el-form-item>

      <el-form-item >
        <el-button 
          type="success" 
          class="submitBtn"
          round
          @click.native.prevent="submit"
          :loading="logining">
          注册
        </el-button>
        <el-button 
          type="primary"
          class="resetBtn" 
          round
          @click.native.prevent="reset">
          重置
        </el-button>
        <hr>
        <p>已经有账号,马上去登录</p>
      </el-form-item>

    </el-form>
  </el-main>
</template>
<script>
export default {
  data () {
    let confirmpasswordCheck = (rule, value, callback) => {
      if (value === '') {
        return callback(new Error('密码是必须的'))
      } else if (value !== this.ReginForm.password) {
        return callback(new Error('两次输入的密码不一致'))
      } else {
        return callback()
      }
    }
    let telCheck = (rule, value, callback) => {
      if (value === '') {
        return callback(new Error('电话号码是必须的'))
      } else if (!Number.isInteger(value)) {
        return callback(new Error('电话号码必须是数字'))
      } else if (value.toString().length !== 11) {
        return callback(new Error('电话号码必须是11位数字'))
      } else {
        callback()
      }
    }
    return {
      ReginForm: {
        username: '',
        password: '',
        confirmpassword: '',
        tel: '',
        email: '',
        name: ''
      },
      logining: false,
      rule: {
        username: [
          {
            required: true,
            max: 14,
            min: 7,
            message: '用户名是必须的,长度为7-14位',
            trigger: 'blur'
          }
        ],
        password: [
          {
            required: true,
            message: '密码是必须的!',
            trigger: 'blur'
          }
        ],
        confirmpassword: [
          {
            required: true,
            validator: confirmpasswordCheck,
            trigger: 'blur'
          }
        ],
        tel: [
          {
            required: true,
            validator: telCheck,
            trigger: 'blur'
          }
        ],
        email: [
          {
            required: true,
            type: 'email',
            message: '请输入正确的电子邮件格式(xxx@xxx.com)',
            trigger: 'blur'
          }
        ],
        name: [
          {
            required: true,
            max: 12,
            min: 2,
            message: '昵称是必须的,最好是汉字',
            trigger: 'blur'
          }
        ]
      }
    }
  },
  methods: {
    // ...
    submit () {
      this.$refs.ReginForm.validate(valid => {
        if (valid) {
          this.logining = true
          console.log('开始写入后台数据!')
        } else {
          console.log('submit err')
        }
      })
    },
    reset () {
      this.$refs.ReginForm.resetFields()
    },
    tologin () {
      this.$router.push('/login')
    }
  }
}
</script>

<style scoped>
.regform {
  margin: 20px auto;
  width: 310px;
  background: #fff;
  box-shadow: 0 0 10px #B4BCCC;
  padding: 30px 30px 0 30px;
  border-radius: 25px; 
}
.submitBtn {
  width: 65%;
}
.to {
  color: #FA5555;
  cursor: pointer;
}
</style>

using System.Collections.Generic;
using MyGameServer.Model;


namespace MyGameServer.Manager
{
    interface IUserManager
    {
        void Add(User ser);
        void Update(User user);//更新数据
        void Remove(User user); //删除数据
        User GetById(int id); //根据ID获取数据
        User GetByUsername(string username); //根据username获取数据
        ICollection<User> GetAllUsers();  //获取所有数据
        bool VerifyUser(string username, string password);//验证用户密码

    }
}

using System.Collections.Generic;
using MyGameServer.Model;
using NHibernate;
using NHibernate.Criterion;

namespace MyGameServer.Manager
{
    class UserManager : IUserManager
    {

        public void Add(User user)
        {
            //也可使用成一个事务
            using (ISession session = NhibernateHelper.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())//事务的开始
                {
                    //进行操作
                    session.Save(user);
                    transaction.Commit();//事物的提交
                }
            }
        }

        public ICollection<User> GetAllUsers()
        {
            using (ISession session = NhibernateHelper.OpenSession())
            {
                //Restrictions.Eq()表示添加查询条件
                // criteria.UniqueResult<User>();得到唯一的结果,返回的是User对象
                IList<User> users = session.CreateCriteria(typeof(User)).List<User>();


                return users;
            }
        }

        public User GetById(int id)//查询条件不会更改数据所以不需要使用事务
        {
            using (ISession session = NhibernateHelper.OpenSession())
            {
                    //进行操作
                    User user = session.Get<User>(id);//删除数据
                    return user;  
            }
        }

        public User GetByUsername(string username)
        {
            using (ISession session = NhibernateHelper.OpenSession())
            {
                //Restrictions.Eq()表示添加查询条件
                // criteria.UniqueResult<User>();得到唯一的结果,返回的是User对象
                User user = session.CreateCriteria(typeof(User)).Add(Restrictions.Eq("Username", username)).UniqueResult<User>();//创建一个配置文件
                return user;
            }

        }

        public void Remove(User user)
        {
            using (ISession session = NhibernateHelper.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())//事务的开始
                {
                    //进行操作
                    session.Delete(user);//删除数据
                    transaction.Commit();//事物的提交
                }
            }
        }

        public void Update(User  user)
        {
            using (ISession session = NhibernateHelper.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())//事务的开始
                {
                    //进行操作
                    session.Update(user);//更新数据
                    transaction.Commit();//事物的提交
                }
            }
        }

        public bool VerifyUser(string username, string password)
        {
            using (ISession session = NhibernateHelper.OpenSession())
            {
                IList<User> users = session.CreateCriteria(typeof(User)).List<User>();
                User user = session.CreateCriteria(typeof(User))
                          .Add(Restrictions.Eq("Username", username))
                          .Add(Restrictions.Eq("Password", password))
                          .UniqueResult<User>();
                if (user == null) return false;
                return true ;
            }
        }
    }
}

第 7 步

再度生成之后再编写翻译

ca88编程 6

7.png

开发银行数据库以前先找个地方建个文本夹来贮存数据,日常叫data

然后就能够运转数据库了
因为用的是3.4的mongodb,所以用mongovue来查看的话会不能够创建collections,也等于多少集也正是mysql的表,查了重重素材说是因为数据库的引擎不近似....
针对那些主题素材据他们说是那样消除的

ca88编程 7

Image 048.png

为此先来品尝一下
mongod --storageEngine mmapv1 --dbpath (data的路径)

ca88编程 8

Image 049.png

跑起来是以此样子

ca88编程 9

Image 050.png

接下来去看一下效率http://localhost:27017/
并发那么些才证实是开发银行了

ca88编程 10

Image 051.png

接下来展开mongovue来测验一下
先成立二个一而再三回九转

ca88编程 11

Image 052.png

然后是这么的

ca88编程 12

Image 053.png

创立三个新的数据库learn

ca88编程 13

Image 054.png

在learn里面创制叁个新的collections,就叫users

ca88编程 14

Image 055.png

ca88编程 15

Image 056.png

成功了

ca88编程 16

Image 058.png

ca88编程,证实那些方法是很平价的

黄金年代旦照旧不成功的话,先把data里面包车型客车数目清空,把数据库换到mmapv1引擎,再重新上边的操作

ca88编程 17

Image 059.png

那边看下小编所增添的援用与类和布署的文本

第 8 步

本人意识今后变动的类的名字和事前运用 Xcode7生成的不均等啊. 去百度了一下. 以此是能够改名字的. 直接改文件名就足以, 同时记住改里面包车型客车 #import ""

ca88编程 18

8.png

要想完结登记和登入成效亟须得有数据,意气风发种情势是用mockjs来效仿数据,也得以平昔用个数据库,为了学更加多的学问,小编或许决定研商一下数据库MongoDB

1、下载数据库,官方网址地址:https://www.mongodb.com/
2、安装数据库:

ca88编程 19

Image 044.png

安装反正便是next下去就是了

ca88编程 20

Image 045.png

自然改个安装路线也是科学的

ca88编程 21

Image 046.png

设置完事后

ca88编程 22

Image 047.png

ca88编程 23

第 9 步

在 viewDidLoad 里面增多如下代码

下一场 Command 本田CR-V, 就能够开心玩耍了

ca88编程 24

9.png

本文由ca88发布,转载请注明来源

关键词: ca88网址 web前端之路 我用 下载链接 多线程