在SQLite数据库中插入数组?

时间:2011-02-19 18:10:54

标签: arrays xcode object nsmutablearray

好,

我是一个菜鸟,想从我的服务器获取一个数组并将其插入到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];
}

    }

1 个答案:

答案 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。