Ios 如何将sqlite3表分配给nsarray

Ios 如何将sqlite3表分配给nsarray,ios,sqlite,chat,xmppframework,Ios,Sqlite,Chat,Xmppframework,我正在开发一个聊天应用程序,我正在使用sqlite存储和检索聊天历史,我能够插入值,但在检索时,我在数组中得到nil,这是我的代码 messageArray=[DBObject AllRowFromTableName:@"chatTable" withUserID:myJID withFriendID:chatWithUser]; for (int i=0; i<[messageArray count]; i++) { Message *msg=[[Message alloc

我正在开发一个聊天应用程序,我正在使用sqlite存储和检索聊天历史,我能够插入值,但在检索时,我在数组中得到nil,这是我的代码

messageArray=[DBObject AllRowFromTableName:@"chatTable" withUserID:myJID withFriendID:chatWithUser];


for (int i=0; i<[messageArray count]; i++) {

    Message *msg=[[Message alloc] init];
          msg.text=[[messageArray objectAtIndex:i] msg];
    if ([[messageArray objectAtIndex:i] lft_rght]==0) {
        msg.fromMe=YES;
    }
    else{
        msg.fromMe=NO;
    }

    msg.type=SOMessageTypeText;

    NSString *dateString =[[messageArray objectAtIndex:i] tim_dte];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH:mm,yyyy/MM/dd"];
    NSDate *dateFromString = [[NSDate alloc] init];
    dateFromString = [dateFormatter dateFromString:dateString];
    msg.date=dateFromString;

    [self.chatHistoryArray addObject:msg];

我收到msg.text empty。请在处理返回数组的循环中帮助我,这些行

Message *msg=[[Message alloc] init];
msg.text=[[messageArray objectAtIndex:i] msg];
应该是

Message *msg=[[Message alloc] init];
msg.text=[[messageArray objectAtIndex:i] text];
您还应该在循环之外创建一次NSDateFormatter,并使用它,因为它不是要创建的“快速”对象

您可能还需要重构对
[messageArray objectAtIndex:i]
的常量调用。创建一个局部变量,该局部变量只获取一次引用,然后使用该局部变量。所以重构后的代码看起来像

messageArray=[DBObject AllRowFromTableName:@"chatTable" withUserID:myJID withFriendID:chatWithUser];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm,yyyy/MM/dd"];

for (int i=0; i<[messageArray count]; i++) {
    Message * baseMessage = [messageArray objectAtIndex:i];
    Message *msg=[[Message alloc] init];
    msg.text= baseMessage.text;
    msg.fromMe= (baseMessage.left_rght == 0);
    msg.type=SOMessageTypeText;
    msg.date=[dateFormatter dateFromString:baseMessage.tim_dte];

    [self.chatHistoryArray addObject:msg];
}
messageArray=[DBObject AllRowFromTableName:@“chatTable”with userid:myJID with friendid:chatWithUser];
NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];
[日期格式化程序setDateFormat:@“HH:mm,yyyy/mm/dd”];

对于(int i=0;i您似乎没有返回您创建的
数组
?准备工作也确实有效吗?注释掉的NSLog“IN-LOOP”在未注释掉时触发了吗?
messageArray=[DBObject AllRowFromTableName:@"chatTable" withUserID:myJID withFriendID:chatWithUser];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm,yyyy/MM/dd"];

for (int i=0; i<[messageArray count]; i++) {
    Message * baseMessage = [messageArray objectAtIndex:i];
    Message *msg=[[Message alloc] init];
    msg.text= baseMessage.text;
    msg.fromMe= (baseMessage.left_rght == 0);
    msg.type=SOMessageTypeText;
    msg.date=[dateFormatter dateFromString:baseMessage.tim_dte];

    [self.chatHistoryArray addObject:msg];
}