项目中遇到的问题解决:深刻认识到类的初始化
2014-07-07 18:43
211 查看
-(NSArray *)getdataFromDatabase { NSString *path = [self getDBPath]; NSLog(@"path ==== %@",path); NSLog(@"self.getDBPath == %@",[self getDBPath]); FMDatabase *membersDB = [FMDatabase databaseWithPath:path]; if (![membersDB open]) { NSLog(@"Failed to open membersDB"); return nil; [membersDB close]; } NSMutableArray *array = [NSMutableArray array]; FMResultSet *rs = [membersDB executeQuery:@"SELECT * FROM Member"];//这里数组为空 容易出错 <pre name="code" class="objc"> <span style="color:#FF0000;"> Member *member = [[Member alloc]init]; while ([rs next]) { member.name = [rs stringForColumn:@"Name"]; member.age = [rs intForColumn:@"Age"]; member.sex = [rs intForColumn:@"Sex"]; member.height = [rs intForColumn:@"Height"]; member.Weight = [rs intForColumn:@"Weight"]; member.icon = [UIImage imageWithData:[rs dataForColumn:@"Photo"]]; NSLog(@"member.name ============= %@",member.name); [array addObject:member];</span> } [membersDB close];<span style="color:#FF0000;"> NSLog(@"array[0] == %@,\narray[1] == %@,\narray[2]==%@",[array[0] name],[array[1] name],[array[2] name]);</span> return [array copy]; } </span>
打印信息如下:
在while循环中打印是正确的,不重复的,可以循环结束在打印我们添加成员的数组,发现都是重复的,也就是都是同一个对象!!!!
泪奔啊。。。。。。这时对类的理解不深刻啊,我在循环外加的 Member *member = [[Member alloc]init];初始化,也就是说再循环中我一直在对同一个对象进行重复操作,
,以至于添加成员的数组都是同一个对象,不同的个数而已。
所以解决办法应该是在循环中初始化,这样一来,每次循环都是一个新的对象(内存地址),这样一来就正确了!!!
-(NSArray *)getdataFromDatabase { NSString *path = [self getDBPath]; NSLog(@"path ==== %@",path); NSLog(@"self.getDBPath == %@",[self getDBPath]); FMDatabase *membersDB = [FMDatabase databaseWithPath:path]; if (![membersDB open]) { NSLog(@"Failed to open membersDB"); return nil; [membersDB close]; } NSMutableArray *array = [NSMutableArray array]; FMResultSet *rs = [membersDB executeQuery:@"SELECT * FROM Member"];//这里数组为空 容易出错 while ([rs next]) { <pre name="code" class="objc"> <span style="color:#FF0000;">Member *member = [[Member alloc]init];</span>
member.name = [rs stringForColumn:@"Name"]; member.age = [rs intForColumn:@"Age"]; member.sex = [rs intForColumn:@"Sex"]; member.height = [rs intForColumn:@"Height"]; member.Weight = [rs intForColumn:@"Weight"]; member.icon = [UIImage imageWithData:[rs dataForColumn:@"Photo"]]; NSLog(@"member.name ============= %@",member.name); [array addObject:member];</span> } [membersDB close];<span style="color:#FF0000;"> NSLog(@"array[0] == %@,\narray[1] == %@,\narray[2]==%@",[array[0] name],[array[1] name],[array[2] name]);</span> return [array copy]; }
<pre name="code" class="objc"><pre name="code" class="objc"> <span style="color:#FF0000;"></span>
相关文章推荐
- 项目中遇到的问题解决:深刻认识到类的初始化
- 项目开发过程中遇到的一些问题和解决办法(逐渐添加)
- VS2005创建Web项目时遇到的问题及解决办法
- [一般问题] android导入项目中遇到的一些问题及解决方法
- 项目开发遇到的问题及其解决.总结
- 使用eclipse+git插件开发android项目时遇到的问题及解决
- 使用VS2005做VB项目时遇到的问题,现已经解决
- 在VS.NET 2003中建立项目时遇到的两个问题及解决方法 (转)
- SSH 项目过程中遇到的问题和解决方法汇总 struts2 spring hibernate
- 做智囊团项目遇到的问题与解决方法
- PDA(WinCE)项目开发中遇到的问题及解决方法总结
- JAVA WEB START 在项目中遇到的问题及解决
- 项目中遇到的问题 还没解决
- 草稿:移植项目到Debin遇到的问题及解决 推荐
- 前段时间做项目中,遇到的问题以及解决办法的总结(一)
- 最近要做个项目,遇到一些关于ansys问题,看看兄弟们能否帮我解决?
- 项目中遇到的一些小问题及解决方法
- PDA(WinCE)项目开发中遇到的问题及解决方法总结
- 在VS.NET 2003中建立项目时遇到的两个问题及解决方法 (转贴)
- 项目中遇到问题就是增加aranda(图片存储)测试环境依赖报错解决进行中