项目中遇到的问题解决:深刻认识到类的初始化
Posted zsychanpin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目中遇到的问题解决:深刻认识到类的初始化相关的知识,希望对你有一定的参考价值。
-(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"];//这里数组为空 easy出错 <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"];//这里数组为空 easy出错 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>
以上是关于项目中遇到的问题解决:深刻认识到类的初始化的主要内容,如果未能解决你的问题,请参考以下文章
面试题: 你在工作/学习过程中遇到过什么深刻问题吗?怎么克服?
面试题: 你在工作/学习过程中遇到过什么深刻问题吗?怎么克服?