好,
我是一个菜鸟,想从我的服务器获取一个数组并将其插入到SQLite数据库表中。我的代码如下。请帮忙!
- (void)getAlbums {
// Get Albums
NSString *userId;
userId = @"1";
NSString *post =[NSString stringWithFormat:@"userid=%@", userId];
NSString *hostStr = @"********************************************?";
hostStr = [hostStr stringByAppendingString:post];
NSData *dataURL = [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];
//Create Array
NSArray *myWords = [serverOutput componentsSeparatedByString:@" "];
// Output server response
NSLog(serverOutput);
//Initialize the array.
NSMutableArray *listOfItems = [[NSMutableArray alloc] init];
listOfItems = [[NSArray arrayWithObjects: myWords, nil] retain];
NSString *test;
while (*test in listOfItems) {
[sqlite executeNonQuery:@"INSERT INTO photo_albums VALUES (?, ?);", variableOne, variableTwo];
}
}
答案 0 :(得分:0)
此代码中存在多个问题。
NSMutableArray *listOfItems = [[NSMutableArray alloc] init];
这将在下一行中泄漏,因为您将另一个项目重新分配给该变量。将其更改为:
NSArray *listOfItems;
listOfItems = [[NSArray arrayWithObjects: myWords, nil] retain];
这不是你的想法。它将使用数组myWords初始化一个数组作为“成员”,它不会添加myWords中的对象 但是为什么这条线仍然存在? myWords已经是一个数组。并且未被释放的保留将是另一次泄漏。
NSString *test;
while (*test in listOfItems) {
这是错的。使用方法:
for (test in listOfItems) {
[sqlite executeNonQuery:@"INSERT INTO photo_albums VALUES (?, ?);", variableOne, variableTwo];
你在哪里获得variableOne和variableTwo?如果不使用名为test
的NSString,为什么要遍历listOfItems?
}
关闭括号没有问题。
哦,serverOutput也没有被释放,所以还有另一个漏洞。而且我很确定编码不是ascii。
重新开始使用iOS 101,了解基础知识并在接下来的两周内忽略sqlite。