第一个项目总结

网络工程项目实施总结 近年来计算机网络行业蓬勃发展,随着云计算与大数据的出现以及超大规模数据中心的加快部署,全国各地关于网络工程的构造项目越来越多。为了满足各类网络工程项目的需求,最大化利用资源完成项目构造,就要求每一位网络工程师更加专业、更加高效。 阅读详情

项目总结

part 1. cocoapod管理

在这一个项目中,所用到的第三方部分是用cocoapod下载的.在podfile中,键入以下代码:

pod 'FMDB'
pod 'MJRefresh'
pod 'AFNetworking'

如果你想用cocoapod下载某一个第三方的SDK却不知道名字是什么,那么你可以在终端键入以下代码:

pod search `关键字`

在这个项目,有一个分享功能,我是用shareSDK来实现分享功能,因为代码已经封装好了,所以使用起来非常简单.如何使用shareSD呢?在这里我就不作说明了,大家可以到http://wiki.mob.com/快速集成指南/这里查看.
如果你要做的项目是需要在Appstore上架的话,那么个人建议不要用类似于shareSKD或者友盟SDK这种第三方,因为在上架时可能会因为某些广告问题而被拒.因此推荐直接到官网去下载对应的SDK,如:腾讯开发者平台http://wiki.open.qq.com/wiki/website/SDK下载下载TencentAthorOpenAPI.

part 2. 使用FMDB进行数据库操作

难点1:在数据库文件已经存在的情况下获取数据库路径

我用的是:

NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"dictionary" ofType:@"sqlite"];

来获取数据库的路径,但是一开始却怎样都获取不了数据库中的数据,排查错误后,发现是数据库文件在项目中的存放位置不正确.如下图所示:
这里写图片描述
在mainBundle中查找文件,必须把文件放到根目录下.如下图:
这里写图片描述

难点2:数据库操作

1.在pinyin表中,前26项是不需要显示在tableView中的,而且相同字母开头的要放在tableView中的同一个分区中,这时候就需要在数据库进行查找数据的操作中进行处理.我使用的是大数组套小数组的方法,截取查找出来的字符串string的第一个字符c,如果字符c与26个字母的其中一个相同,就加进alphbetArray中

NSMutableArray *alphabetAry = [NSMutableArray array];
Model *m1 = [[Model alloc] init];
Model *m2 = [[Model alloc] init];
for (int i = 0; i < 26; i++) {
m1 = array[i];
tmpArray = [NSMutableArray array];
for (int j = 26; j < array.count; j++) {
m2 = array[j];
if ([m1.py_pinyin isEqualToString:[m2.py_pinyin substringWithRange:NSMakeRange(0, 1)]]) {
[tmpArray addObject:array[j]];
}
}
[alphabetAry addObject:tmpArray];

2.每一次的查询,都会把查询的字加入到最近搜索表(Search)中.一开始,我直接在dictionary.sqlite进行insert操作,然后就会报一个no such table的错误提示.于是我改为新建一个数据库,将这一些操作在新建的数据库中执行,即每次进行数据库的增,删,改操作时,都调用以下方法:

+(BOOL)creat{
    BOOL flag = NO;
    NSString* docsdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString* dbpath = [docsdir stringByAppendingPathComponent:@"user.sqlite"];

    FMDatabase* db = [FMDatabase databaseWithPath:dbpath];
    [db open];
    NSString *sqlCreateTable =  [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('simp' TEXT,'pinyin' TEXT, 'bushou' TEXT, 'bihua' TEXT)",COLLECTION];

    if ([db open]) {
        flag = [db executeUpdate:sqlCreateTable];
        [db close];
    }
    return flag;
}

3.向Search表和collection表中插入数据,如果将要插入的数据已经存在,那么放弃当前的插入操作.

BOOL flag = NO;

    [DetailModel createSearch];
    NSArray *array = [DetailModel findFromSearch];
    if (array.count != 0) {
        for (int i = 0; i < array.count; i++) {
            DetailModel *DM = array[i];
            if ([simp  isEqualToString:DM.simp]) {
                return flag;
            }
        }
    }

part 3. 使用AFNetworking进行网络请求.

难点1:数据处理,字段名要相对应.比如:在网络请求回来的数据中一个title字段,那么相对应地就要有:
@property (nonatomic,strong) NSString *title;
难点2:网络请求的结果有成功和失败两种.当请求成功时,直接把网络请求得到的数据经过处理后再显示在tableView上.当请求失败时,屏幕会显示加载数据失败.
+(void)netWorkWithPath:(NSString *)path Params:(NSDictionary *)params CallBack:(CallBack)callback{

    path = [DomainString stringByAppendingString:path];

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    [manager GET:path parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

        callback(responseObject,SuccessType);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:error.debugDescription,@"info", nil];
        callback(info,FailedType);
    }];
}

执行网络语法方法后,如成功即SuccessType;如失败即FailedType.然后用这两个type进行逻辑处理即可.

part 3. 索引表

索引表的话,IOS也有属于自己的索引表,但是系统的索引表并不能满足我们.那我们怎么做呢?
自定义一个imageView,并在上面设置按钮,点击按钮跳转至对应的分区.

难点:点击按钮后,要根据什么条件才能跳转到对应的分区呢?使用UITableView的scrollToRowAtIndexPath方法.
[myTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:分区位置]
atScrollPosition:UITableViewScrollPositionTop animated:YES];

part 4. 字体

在这项目中,我需要用到楷体用为UILabel的字体.但是系统提供的字体中并没有楷体,这时候就需要用第三方字体了,那我们应该怎么做呢?
Step1:下载楷体的ttf文件,导入项目中.Tips:字体下载地址http://font.niutuku.com/TTF/
Step2:在Info.plist文件中,添加新项Fonts provided by application,再新增一个items,即下载的ttf文件名
这里写图片描述

part 5. 音频播放

使用ios自带的多媒体播放声音.由于播放声音时会卡UI,所以要用多线程的方式播放声音.

#import <AVFoundation/AVFoundation.h>
-(void)playSoundAction:(UIButton *)sender{
    [NSThread detachNewThreadSelector:@selector(soundAction) toTarget:self withObject:nil];
}

-(void)soundAction{
    AVSpeechUtterance *utterance = [AVSpeechUtterance
                                    speechUtteranceWithString:self.sound];

    utterance.voice=[AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];//设置语言
    utterance.volume = 0.5;
    utterance.rate = 0.01;
    utterance.pitchMultiplier = 1.0;

    AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init];
    [synth speakUtterance:utterance];
}

part 6. 适配和布局

在iphone6 plus上布局最为困难,用简单的frame布局不能满足需求,因此需要AutoLayout与frame相结合.
分享至QQ,QQ空间等,需要添加白名单.方法为在Info.plist中加入以下代码:

<array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>QQ</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>QQ41DB72F4</string>
            </array>
        </dict>
    </array>

part 7. 搜索

在文本框中输入单个汉字,部首,拼音,都可得到对应的查询结果.难点:如何检测用户输入的是单个汉字?还是部首?还是拼音?
<1>.检测用户输入的是汉字还是拼音

NSString *string = [textField.text substringToIndex:1];
    const char *cString = [string UTF8String];
    if (strlen(cString) == 3) {
        if (textField.text.length != 1) {
            [[[UIAlertView alloc] initWithTitle:@"注意" message:@"请输入单个汉字" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
            flag = NO;
            return flag;
        }
}

<2>检测用户输入是否为部首

NSArray *array = [Model findBushou];
    if([textField.text isEqualToString:m.title]){...}

part 8. 截图

- (UIImage *) captureScreen {
    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
    CGRect rect = [keyWindow bounds];
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [keyWindow.layer renderInContext:context];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}
网络工程项目总结 (1) 虚拟化技术是一种非常常见的云计算平台安全应用技术,在该技术的应用过程中,用户可以将多台计算机系统虚拟成一个新的计算机系统,并将多台计算机系统的配置信息通过虚拟化技术进行统一管理,从而实现对云服务业务资源的合理分配和分配。(2)在云计算平台的安全应用过程中,虚拟化技术可以为用户提供更多的增值服务,通过该技术,用户可以在云计算平台上对各种计算机系统资源进行灵活配置,从而实现对云服务业务资源的优化和控制。此外, 阅读详情

相关推荐

Spring boot创建第一个项目

8080端口通常用于部署Web应用程序,特别是在开发和测试阶段。在Tomcat中,默认情况下,Web应用程序会使用8080端口来监听HTTP请求。这意味着当您启动Tomcat服务器时,您可以通过访问http://localhost:8080来访问部署在Tomcat上的Web应用程序。

ltzoro的博客 1505

第一个项目心得总结

沟通是保证项目顺利进行的基石,只有通过沟通才能确保每个人都明确任务,及时的发现每个人负责的地方是否有疏忽出错,避免冲突和误解。在项目中,我们要积极主动地与团队成员沟通,及时分享自己的思路和想法,以促进团队合作和项目进展。在开始一个项目之前,首先需要明确项目的目标和所要达到的效果,这样才能更好地规划后续的工作。在我参与的一个团队项目中,我们首先召开了会议,明确了项目的目标和分工,每个人都知道自己的任务,并对结果负责。做项目是一种宝贵的学习和锻炼机会,它培养了我们的团队合作能力和解决问题的能力。

LuLuhua的博客 1303

React 创建第一个项目

Create React App 是一个官方支持的脚手架工具,可以帮助你快速创建一个新的 React 项目。它是应用的启动点,通常在这里调用 将组件渲染到页面的根节点。让我们稍微修改 App.js 来展示一个简单的组件,并理解 React 组件的基本构建方式。App.js 是主组件文件,定义了一个基础的 React 组件,后期主要改这个文件。在 React 中,组件可以拥有 state(状态),用于存储和更新组件的数据。的 这是默认的根组件,你可以在这里编写自己的代码,构建 UI。

xiaoaque的博客 1100

导入项目的总结

最近换了新电脑,所以打算把之前没弄好的项目,弄到新电脑继续做,但是导入后,发现各种的报错,无法理解,而且网上很多信息都是不行的,经过1星期的努力,终于解决了,哎!(没人带的人,只能靠自己了)开始:(1)环境的搭配,最好一直,加入之前用的是JDK1.6的,新环境上也最后使用1.6的,还有TOMCAT 也是。(2)开始截图: 第一步,选在FILE 哪里的IMPORT,然后找到圈住的选项. 然后开始导入...

weixin_39397112的博客 896

第一个vue项目

DOM(Document Object Model,文档对象模型)是HTML文档的编程接口。它将HTML文档表示为一个由节点和对象组成的树状结构,允许开发者通过JavaScript动态访问和操作文档内容在Vue.js中,Vue接管了DOM操作,开发者不需要直接操作DOM,而是通过声明式的数据绑定来实现页面的更新。

m0_65485230的博客 1152

【SpringBoot】1、创建第一个SpringBoot项目

创建SpringBoot项目可以通过两种方式,1、通过访问:https://start.spring.io/,SpringBoot的官方网站进行创建SpringBoot项目;2、通过工具(例如:Idea)创建SpringBoot项目。本次使用开发工具:Idea创建我的第一个SpringBoot项目。 首先,打开我们的Idea开发工具 选择Create New Poject(创建一个新的项目) ...

JACKAL 21万+

Flutter 我的第一个flutter项目

P002 创建第一个flutter项目 1.创建并运行一个Flutter App工程 打开Android studio(简称AS)>File>New>New Flutter Project 选择一个模拟器,点击旁边的run 按钮 第一次编译项目时间比较长,耐心等待即可,运行完成 如下图 2.项目基本文件目录 Flutter项目主要分为Android,iOS,lib,pubspec.yaml这四个,其中lib下就是用来flutter开发的,我们的dart文件就放在这里,pubspec.

半身风雪 2449

3D视觉-激光三角测量法的概述和原理

激光三角法位移测量的原理是,用一束激光以某一角度聚焦在被测物体表面,然后从另一角度对物体表面上的激光光斑进行成像,物体表面激光照射点的位置高度不同,所接受散射或反射光线的角度也不同,用。激光三角测量法是一种通过图像采集系统采集被测物表面漫反射的激光轮廓,进而基于设备已知的相对位置通过算法处理,获得被测物表面的三维轮廓数据,进而还原目标物体三维空间信息的方法。采用激光三角原理和回波分析原理进行非接触位置、位移测量的精密传感器, 广泛应用于位置、位移 、厚度、半径、形状、振动、距离等几何量的工业测量。

qq_20660115的博客 3919

第一个JavaWeb项目

一、开始之前的一点小准备1、集成Eclipse与Tomcat在开发过程中,如果通过手动方式来部署、运行web项目,其开发过程会很繁琐,而且效率低下。为了提高开发效率,需要将Tomcat服务器配置到Eclipse中,为web项目指定一个web应用服务器。这样就可以在Eclipse中操作Tomcat,并自动部署和运行web项目。将Tomcat配置到Eclipse中的步骤如下: (1)在Eclipse中单

B14070315的博客 3544

HDRnet——双边滤波和仿射变换的摇身一变

layer层数越多,下采样得到的图越小,low-level features的好处是最后的grid会更coarser,最后的特征图的感受野也越多,非线性更好,表达力更强。所以最终grid是5维的[B,in*out,n,H,W],permute之后是[B,H,W,n,in*out],B是batchsize,n表示对guide的量化级数,in*out表示每个cell的变换系数。这部分的处理对象是低分辨率图,利用CNN进行特征提取(局部和全局),最后fuse得到grid,这里面包含了变换的系数。

zcg1942的博客 1576

遗传病变异注释预测工具安装系列之------Exomiser 安装及bug处理

Exomiser是一个Java程序,它从全外显子组或全基因组测序数据中发现潜在的致病变异。 Java 版本必须为1.8以上。 Exomiser 最新版本下载 wget -c https://github.com/exomiser/Exomiser/releases/download/11.0.0/exomiser-cli-11.0.0-distribution.zip unzip ...

qq_37329349的博客 1535

Django 创建第一个项目

恭喜您!您已经成功创建了第一个 Django 项目。接下来,您可以继续探索 Django 的更多功能,如表单处理、用户认证和模板系统。

lsx202406的博客 446

告别盲目调参:手把手教你用RKISP2.x Tuner理解AWB、AE、NR等核心模块

本文详细介绍了如何使用RKISP2.x Tuner工具进行ISP调试,重点解析AWB、AE、NR等核心模块的调参技巧。通过RV1126平台的实际操作演示,帮助工程师快速掌握可视化对比实验方法,告别盲目调参,提升图像信号处理效率。

weixin_30300225的博客 392

【SpringBoot】第一个Springboot项目

目录 前言 一、springboot是什么? 二、Idea创建第一个springboot项目 1.创建一个springboot项目 2.选择依赖 4.写一个测试类 5.启动程序 6.测试 三、总结 前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开...

weixin_44382688的博客 1576

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

努力,加油每一天鸭~ 1037

《Autosar_MCAL高阶配置》总目录_培训教程持续更新中...

《Autosar_MCAL高阶配置》总目录_培训教程持续更新中...

「汽车电子助手」的博客 1万+

idea创建第一个项目

新建第一个项目并输出“HelloWorld”

2503_93320696的博客 497

真正的工业级环形缓冲区(Circular Buffer)完整实现细节

永远不要永远不要ToArray()或AddRange()永远返回或两段Span永远用_head_tail% Capacity实现环形照着上面这套代码改,你的系统将彻底告别内存爆炸,从“实验室玩具”变成“产线战神”!需要我给你一个支持两段绘制的完整实现吗?

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 127

第一个Maven项目

创建第一个Maven项目。

qq_45502437的博客 270

Neo4j:入门基础(二)之导入CSV文件

导入CSV文件的方式  主要的两种方式如下:   1、使用 Cypher 命令LOAD CSV,这种方式可以处理中小型数据(可达10 million条记录)   2、使用批量导入工具neo4j-admin ,用来直接导入大数据集 三、上述方式具体导入过程   1、Cypher 命令LOAD CSV 参数 1、USING PERIODIC COMMIT 300 使用批量提交,每满300条提交一次,防止内存溢出 2、WITH HEADERS 从文件中读取第一行作为参数名,...

Puzzle的博客 3万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

解决第一个项目可以上传第二个项目不能上传到SVN的方法

第一个项目忘记了怎么上传,但是第二个项目上传SVN的方法如图 选中第二个 Apply Patch,而不是第一个

有 prepare , No out 1575

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Idea中创建第一个java项目

1.下载与安装 下载idea IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains 下载java-JDK包 Java Downloads | Oracle 2.创建java项目 创建项目保存路径 范例中创建项目路径为:E://study 打开idea并开始创建项目 新建项目,选择java模块 从模板中创建项目,直接点击下一步 创建项目路径以及项目名称,路径为刚才创建的文件夹,项目

qq_39727831的博客 2518

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IDEA创建第一个项目

新建第一个项目并输出“HelloWorld”

NaNaa_T的博客 318

人生第一个项目

 我的第一个项目 列车时刻查询系统收工了 庆祝一下

时磊的小窝 429

创建第一个Django项目

一、Django构建项目 1、cmd命令行构建项目 cmd窗口中,切换到指定的项目文件夹,执行:django-admin startproject project 其中 project是项目名称 这时会在指定的项目文件夹中,生成一个 project文件夹,目录结构如下: ``` project/ manage.py project/ __init__.py settings.py url...

m0_69254913的博客 399
上一篇: IOS GIF图片解析 将gif图片解析成image数组
下一篇: chromedriver以及chrome google版本的对应关系
25岁的大叔
博客等级 码龄13年 14粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值