当前位置:  编程技术>移动开发
本页文章导读:
    ▪group_concat有长度限制        group_concat有长度限制! 长度陷阱用了group_concat后,select里如果使用了limit是不起作用的.用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。使用group_con.........
    ▪ 会合(二)——集合家族        集合(二)——集合家族 一.集合家族 1.NSArray NSArray是一个Cocoa类,用来存储对象的有序列表, 限制:a.只能存储Objective-C的对象,而不能存储C语言中的基本数据类型,如int,float,enum,struct或.........
    ▪ 聚合 (一)——NSString       集合 (一)——NSString   Cocoa由两个框架组成:FoundationKit和ApplicationKit。 ApplicationKit:存放了所有的用户接口对象和高级类 FoundationKit:有许多实用的面向数据的低级类和数据类型。 此框架.........

[1]group_concat有长度限制
    来源: 互联网  发布时间: 2014-02-18
group_concat有长度限制!
长度陷阱
用了group_concat后,select里如果使用了limit是不起作用的.
用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。

使用group_concat_max_len系统变量,你可以设置允许的最大长度。
程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度,则结果被截至这个最大长度。

在SQLyog中执行 SET GLOBAL group_concat_max_len = 10 后,重新打开SQLyog,设置就会生效。

---------------------------
GROUP_CONCAT将某一字段的值按指定的字符进行累加,系统默认的分隔符是逗号,可以累加的字符长度为1024字节。可以对这些参数进行修改。

1.先举一个简单的例子

   select group_concat(f_a) from t_one group by f_b;

   按f_b进行分组查询,将每组中的f_a进行累加。



2.修改默认的分隔符

   select group_concat(f_a  separator  '_') from t_one group by f_b;

   separator  是一个关键字,后面跟着要进行分隔的字符



3.排序

   select group_concat(f_a order by f_a  separator  '_') from t_one group by f_b;



4.修改默认字符大小

   1).在MySQL配置文件中加上

        group_concat_max_len = 102400 #你要的最大长度

    2).可以简单一点,执行语句,可以设置作用范围

           SET GLOBAL group_concat_max_len=102400;
           SET SESSION group_concat_max_len=102400;

5.和concat使用

    group_concat默认返回的是BLOB大对象,可以使用concat,返回字符串,还可以在返回的内容,在加入其它的数 据。



    
[2] 会合(二)——集合家族
    来源: 互联网  发布时间: 2014-02-18
集合(二)——集合家族

一.集合家族

1.NSArray

NSArray是一个Cocoa类,用来存储对象的有序列表,

限制:a.只能存储Objective-C的对象,而不能存储C语言中的基本数据类型,如int,float,enum,struct或者NSArray中的随机指针。

b.不能在NSArray中存储nil(对象的零值或NULL值)。

         //通过类方法arrayWithObjects创建一个新的NSArray,发送一个以逗号分隔的对象列表,
	//在列表结尾添加nil代表列表结束(这就是不能在数组中存储nil的原因之一)
	NSArray *array;
	array = [NSArray arrayWithObjects:@"one",@"two",@"three",nil];
	//获得对象的个数
	- (unsigned) count;
	//获取特定索引处的对象
	- (id)objectAtIndex: (unsigned int) index;
 

2.NSMutableArray:可变数组

       //数组容易也只是数组最终大小的一个参考,不会将对象预写入数组,也不会用该容量值来限制数组的大小。
	+ (id) arrayWithCapactity: (unsigned int) numItems;
	//在数组结尾处添加对象
	- (void) addObject: (id) anObject
	//删除特定索引处的对象
	- (void)removeObjectAtIndex:(unsigned) index;
 

3.NSEnumerator(枚举)

       //创建
	- (NSEnumerator *) objectNSEnumeratort;
	NSEnumerator *anumerator;
	enumerator = [array objectNSEnumerator];
	//从后向前浏览集合
	- (void)reverseObjectEnumerator;
	//获得枚举器之后可以开始一个while循环,每次循环都向这个枚举器请求它的下一个对象;
	- (id) nextObject;
	nextObject返回nil值时,循环结束
	整个循环代码:
	NSenumerator *enumerator;
	enumerator = [array objectEnumerator];
	
	id thingie;
	//对可变数组进行枚举操作时,不能对数组容器进行添加或删除操作
	while(thingie == [enumerator nextObject]){
		NSLog(@"I found %@",thingie);	
	}
 

4.快速枚举

for(NSString *string in array){
		NSLog(@"I found %@",string);
	}
 

5.NSDictionary(散列结构)

(1)NSDictionary

                //创建字典
		+ (id)dicationaryWithObjectsAndKeys:
					(id)firstObject,...;
		//获取字典中的值
		- (id) objectForKey: (id) aKey;

		示例代码:
		Tire *t1 = [Tire new];
		Tire *t2 = [Tire new];
		Tire *t3 = [Tire new];
		Tire *t4 = [Tire new];

		NSDictionary *tires;
		tires = [NSDictionary dictionaryWithObjectsAndKeys:
				t1,@"front-left",t2,@"front-right",
				t3,@"back-left",t4,@"back-right",nil]

		Tire *tire =[tires objectForKey: @"back-right"];
 

(2)NSDictionary不可变,NSMutableDictionary允许随意添加或删除元素。

                //创建NSMutableDictionary可以发送dictionary消息,也可以用dictionaryWithCapacity:方法
		//并用告诉该字典的最终大小
		+ (id) dicationaryWithCapacity: (unsigned int) numItems;//大小仅仅是建议,不是对其限制
		//添加元素
		- (void) setObject: (id) anObject 
				forKey: (id) aKey;
		//删除元素
		- (void) removeObjectForKey:(id)aKey;
 

基本数据类型包装类

1.NSNumber

NSArray和NSDictionary只能存储对象,而不能直接存储任何基本类型的数据,但是可以用对象来封装然后添加到集合中

Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型

a.几个方法示例:

        + (NSNumber *) numberWithChar : (Char)value;
	+ (NSNumber *) numberWithInt : (Int)value;
	+ (NSNumber *) numberWithFloat : (Float)value;
	+ (NSNumber *) numberWithBool: (Bool)value;
 

b。Objective-c中不支持自动装箱

        NSNumber *number;
	number = [NSNumber numberWithInd:42];
	[array addObject: number];
	[dictionary setObject: number forkey: @"Bork"];
 

C。只要将一个基本类型数据封装到NSNumber中就可以通过下列方法重新获取它

        - (Char) charValue;
	-  (Int) intValue;
	- (Float) floatValue;
	- (Bool) boolValue;
	- (NSString *) stringValue
 

2.NSValue

NSNumber是NSValue的子类,NSValue可以包装任意值。

+ (NSValue *) valueWithBytes: (const void *) value
			objCType: (const void *) type;

可以使用类方法创建新的NSValue:

 

3.NSNull

不能将nil存入近NSArray,NSDictionary中,因为nil代表的是一个集合的结束。

传空值用如下方法:

 + (NSNull *)  null;

示例:

[contact setObject: [NSNull null] forKey:@"home fax machine"];

访问它的方法

        id homefax;
	homefax = [contact objectForKey: @"home fax machine"];
	if(homefax == [NSNull null]){
		//no fax machine......
	}
 

二.集合综合运用小例子查找文件

int main(int argc, Const char *argc[]){
	//初始化对象池
	NSAutoreleasePool *pool;
	pool = [[NSAutoreleasePool alloc] init];
	//获得fileManager
	NSFileManager *defaultManager;
	defaultManager = [NSFileManager defaultManager];
	//将路径封装
	NSString *home;
	home = [@"~",stringByExpandingTildeInPath];
	//将路径字符串传递给文件管理器
	NSDirectoryEnumerator *direnum;
	direnum = [manager enumeratorAtPath: home];
	//创建可变数组
	NSMutableArray *files;
	files = [NSMutableArray arrayWithCapacity: 42];
	//迭代符合条件扩展名为jpg的文件名
	NSString *filename;
	while(filename = [direnum nextObject]){
		if([[filename pathExtension] isEqualTo: @".jpg"]){
			[files addObject: fillname];
		}
	}
	//打印所有符合条件的文件名
	NSEumerator *filenum;
	filenum = [files objectEnumerator];
	while(filename = [filenum nextObject]){
		NSLog(@"%@",filename);
	}

	[pool drain];
	return 0;
}
 

  快速迭代方法

int main(int argc, Const char *argc[]){
	NSAutoreleasePool *pool;
	pool = [[NSAutoreleasePool alloc] init];

	NSFileManager *defaultManager;
	defaultManager = [NSFileManager defaultManager];

	NSString *home;
	home=[@"~",stringExpandingTildeInPath];

	NSMutableArray *files;
	files = [NSMutableArray arrayWithCapacity: 42];

	for(NSString *filename in [defaultManager enumeratorAtPath: home]){
		if([[filename pathExtension] isEqualTo: @".jpg"]){
			[files addObject filename];
		}
	}

	for(NSString *filename in files){
		NSLog(@"@",filename);
	}
}
 

    
[3] 聚合 (一)——NSString
    来源: 互联网  发布时间: 2014-02-18
集合 (一)——NSString

 

Cocoa由两个框架组成:FoundationKit和ApplicationKit。
ApplicationKit:存放了所有的用户接口对象和高级类
FoundationKit:有许多实用的面向数据的低级类和数据类型。
此框架存放在:/Developer/ADC Reference Libraty/documentaion/index.html中
1.示例代码:
import <Foundation/Foundation.h>
int main(int argc,const char *argv[]){
        NSAutorealeasePool * pool =[[NSAutorealeasePool alloc] init];
        //insert your code here
         NSLog(@"Hello ,World");
         [pool drain];//释放内存
         return 0;
}
 
2.字符串
(1)创建字符串
/*备注:a.+:代表此方法属于类方法,属于类对象(而不是属于类的实例对象)并且通常用于创建新的实例,也称工厂方法。
根据传递的参数创建新对象
类方法也可以访问全局数据,
比如AppKit中NSColor类有一些以不同颜色命名的类方法,redColor和blueColor,可以这样写
 NSColor *haveBlueColor = [NSColor blueColor];
  b. 省略号:表示接收多个以逗号隔开的其他参数*/
+ (id)stringWithFormat: (NSString *) format,... ;
NSString *height;
height = [NSString stringWithFormat: @"Your height is %d feet, %d inches", 5, 11];
  
(2)字符串长度
- (unsigned int) length;
unsigned int length = [height length];
 
(3)比较字符串:
- (Bool) isEqualToString: (NSString *) aString;
 
(4)是否区分大小写的比较
/*备注:options是位掩码,可以使用位运算符(|)来添加选项标记
常用选项:NSCaseInsensitiveSearch :不区分大小写字符
NSLiteralSearch:区分大小写比较
NSNumericSearch:比较字符串的个数而不是字符值。*/
- (NSComparisonResult) compare: (NSString *) string
                                        options:(unsigned)mask
 
例子:比较字符串,忽略大小写但按字符个数的多少正确排序
if([thing1 compare thing2
                  options: NSCaseInsensitiveSearch | NSNumericSearch]
              == NSOrderedSame){
                NSLog(@"They match");
}
 
(5)字符串是否包含别的字符串
//以另一个字符串开头
- (Bool) hasPrefix: (NSString *) aString;
//以另一个字符串结尾
- (Bool) hasSuffix: (NSString *) aString;
//是否包含其他字符
- (NSRange) rangeOfString: (NSString *) aString;
 
(6)可变性
类似于StringBuffer ,Cocoa提供了NSString的子类,叫NSMutableString.

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3