Monthly Archives: April 2015

Objective-C-HMTL-Parser解析乱码问题的解决

Objective-C-HMTL-Parser是Objective-c实现的一个Html杰解析库,地址为:https://github.com/zootreeves/Objective-C-HMTL-Parser 在使用Objective-C-HMTL-Parser解析中文网页的时候经常出现中文乱码的问题,主要问题是页面没有指定编码格式,通过下面代码指定编码格式即可解决乱码的问题: NSString * fileContent = [NSString stringWithContentsOfURL:[NSURL URLWithString:allUrl] encoding:(NSUTF8StringEncoding) error:&error]; fileContent = [fileContent stringByReplacingOccurrencesOfString:@”/><link” withString:@” charset=utf-8/><link”]; HTMLParser *parser = [[HTMLParser alloc] initWithString:fileContent error:&error];  

iOS Leave a comment

判断NSString能否转换为数字

判断是否能够转成整形 – (BOOL)isPureInt:(NSString *)string{ if (!string) { return NO; } NSScanner *_scanner = [NSScanner scannerWithString:string]; int val; return [_scanner scanInt:&val] && [_scanner isAtEnd]; } 判断是否能转成浮点型 – (BOOL)isPureFloat:(NSString *)string{ if (!string) { return NO; } NSScanner* scan = [NSScanner scannerWithString:string]; float val; return [scan scanFloat:&val] && [scan isAtEnd]; }

iOS Leave a comment

AFNetworking POST 请求失败问题解决

在使用AFNetworking 2.0 POST方式提交请求的时候,经常会报下面错误。 “Request failed: unacceptable content-type: text/html” using AFNetworking 2.0 这是由于服务器端返回的content-type为text/html,但客户端不认识造成的。解决方法如下: AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@”text/html”];

iOS Leave a comment

/bin/bash^M: bad interpreter: no such file or directory 问题的解决

造成这个问题的原因是bash脚本被window的程序打开过,造成编码格式出现问题,不能正确执行。 vi file :set ff=unix :wq

Uncategorized Leave a comment

ios中将GB2312编码字符串转成UTF8

在iOS开发中,有时候服务器端传回的数据编码格式为GB2312,造成乱码,可以用下面代码将GB2312编码数据转为UTF-8 NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSString *str = [[NSString alloc] initWithData:data encoding:encoding];

Uncategorized Leave a comment

React Native 开发教程

React Native 开发教程 原文地址:http://facebook.github.io/react-native/docs/tutorial.html#content 序言 该教程的主要目的是让开发者使用React Native 快速开发一个iOS app。学习该教程需要有React基础。 安装 React Native目前只支持iOS App的开发,因此只能在mac osx 系统上使用。需要安装的软件包括 xcode、Homebrew,node,npm和watchman,Flow可选安装。 安装完上面的软件后,在命令行执行下面的命令用来安装开发环境和创建React Native工程。 1 安装开发环境 npm install -g react-native-cli react-native-cli 是react native 的命令行工具,可以直接在终端中使用。 2 创建React Native工程 react-native init AwesomeProject 上面的命令创建一个包含React Native源代码的工程,可以直接使用xcode打开。 开发 使用xcode打开AwesomeProject/AwesomeProject.xcodeproj工程文件,点击Run按钮或者cmd+R运行工程,可以查看运行结果。应用运行的时候会自动启动一个node server来host js文件。修改index.ios.js文件后,重新运行应用,即可看到应用的变化。 本开发教程将开发一个简单的电影应用(Movie App)。在该应用中将获取电影的海报和名称使用ListView来显示。 hello world react-native init 命令会拷贝Examples/SampleProject工程名重命名为作为init参数的工程名,在上面例子中为AwesomeProject,这是一个hello world的工程。开发者可以通过修改index.ios.js文件来查看应用的变化。 模拟数据 在开始写代码之前,先创建一些模拟数据。打开index.ios.js文件,在文件顶部定义MOCKEDMOVIESDATA,如下面代码: var MOCKED_MOVIES_DATA = [ {title: […]

React Native Leave a comment

mapbox gl native支持中文换行

在mapbox gl native中默认情况下文字换行是通过文字间的空格来控制的,这适合以空格来区分单词的语言比较适合,但中文中一般不会使用空格,所以造成中文标注不能换行。 相关bug https://github.com/mapbox/mapbox-gl-native/issues/1223 下面代码临时解决中文换行的问题,只能换2行。 src/mbgl/text/glyph_store.cpp bool hasspace = false; uint32_t space = 32; if(!(string.find(space) ==std::string::npos)) { hasspace = true; } long breakOffset=-1; if (!hasspace) { if (string.size() > maxWidth/24) { breakOffset = string.size()/2+1; } } int i=0; for (uint32_t chr : string) { if (!hasspace &&i==breakOffset) { shaping.emplace_back(space, x, y); auto metric = metrics.find(space); […]

Uncategorized Leave a comment

fmdb 支持中文全文索引

在上篇博客sqlite3 支持中文全文搜索 基础上,将中文全文索引的功能移植到fmdb上,供iOS开发者使用。 项目地址:https://github.com/barrycug/fmdb 数据生成,可以参考 https://github.com/barrycug/SqliteChineseSearch 使用方法: [[FTSQueryTask sharedInstance] query:@”帝王” block:^(NSArray *result) { }]; 需要注意的是表的结构和数据需要自己定义和导入。

Uncategorized Leave a comment

sqlite3 支持中文全文搜索

  sqlite3 自带了全文搜索的功能FT3和FT4,但很遗憾的是不支持中文分词。 在github上找到一个支持中文分词的类库,主要思路就是将自定义的分词器嵌入到sqlite中,项目地址:https://github.com/haifengkao/SqliteSubstringSearch 核心代码如下: //获取分词器 get_character_tokenizer_module(&ptr); // register character tokenizer, note that you need to register it everytime the database is opened registerTokenizer(db, token_name, ptr); 注册好之后就可以使用match语法进行中文全文搜索了 SELECT * FROM docs WHERE docs MATCH ‘”lin”‘; 该项目中使用的中文分词器算法为MMSEG

Mac OS X Leave a comment

node-fontnik使用

node-fontnik 是mapbox开源的将字体转换为 SDFs (signed distance fields) 格式的工具. SDFs使用protobuf定义。 node-fontnik 是基于nodejs开发的,因此必须要安装node ,并且目前必须为node v0.10.x ,最新版本安装的时候会出错。 1 下载node-fontnik 源代码 git clone https://github.com/mapbox/node-fontnik cd node-fontnik 2 安装 npm install 3 使用 cd bin ./build-glyphs “Microsoft YaHei Regular” glyphs/ 需要注意的是,在build-glyphs文件中,没有注册字体,因此可以修改build-glyphs,首先注册字体,如下面代码: fontnik.register_fonts(path.resolve(__dirname + ‘/../fonts/’), { recurse: true }); var faces = []; faces = fontnik.faces(); console.error(‘resolved ‘, faces);

node Leave a comment