ios sqlite 返回数据无法显示

标签 ios sqlite

我是 iOS 的新手,我正在使用 SQLite 并且我已经成功地将数据插入数据库,但是当我尝试获取数据和 NSLog 时,我得到:<Person: 0x10f2242e0>

我该怎么办?如何获取数据?

这是我的代码:

-(NSArray*)getPersons
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"SleepCycle&time.db"];

    // Check to see if the database file already exists
    bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:databasePath];

    // Open the database and store the handle as a data member
    if (sqlite3_open([databasePath UTF8String], &databaseHandle) == SQLITE_OK)
    {
    }




    // Allocate a persons array
    NSMutableArray *persons = [[NSMutableArray alloc]init];

    // Create the query statement to get all persons
    NSString *queryStatement = [NSString stringWithFormat:@"SELECT ID, ADATE, STIME, ETIME ,PER,TOTALTIME,TOTALTIMEMINUTE FROM PERSON"];

    // Prepare the query for execution
    sqlite3_stmt *statement;
    if (sqlite3_prepare_v2(databaseHandle, [queryStatement UTF8String], -1, &statement, NULL) == SQLITE_OK)
    {
        // Iterate over all returned rows
        while (sqlite3_step(statement) == SQLITE_ROW) {

            // Get associated address of the current person row
            int personID = sqlite3_column_int(statement, 0);



            // Create a new person and add it to the array

            Person *person = [[Person alloc]GetAllData:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)]
                                        andStime:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 2)]
                                        andEtime:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 3)]
                                         andper:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 4)]
                              andtotaltime:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 5)]
                              andtotaltimeMinute:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 6)]
                                             andIdd:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 0)] ];



            // try for id
           /* Person *person = [[Person alloc]Getdata:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)]
                                                  andLastName:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 2)]
                                                  andBirthday:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 3)]
                                         andAddress:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 4)]
                                             andIdd:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 0)] ];
            */
            [persons addObject:person];


        }
        sqlite3_finalize(statement);
    }
    // Return the persons array ----------------------------

    NSLog(@"%@",persons);

    return persons;
}

return persons; 之前的最后一行是我打印数据的地方。

最佳答案

Persons 是你代码中的对象数组,里面包含各种person对象;因此 NSLoging 它,你只会看到对象的内存地址。如果您想查看数组中单个 person 对象的属性,您需要执行如下操作:

NSLog(@"Person 1:, %@", [persons objectAtIndex:0].lastName); 
//Based on Objective-C naming conventions you better use "lastName" rather than "LastName", etc.

您可以使用 for 循环遍历数组中的所有项目并获取它们的属性。

搜索并阅读相关文档,并查看其他一些与此相关的类似问题和答案: How to display an array of object with NSLog或者 Dumping contents of Array Obj-c to consoler .

关于ios sqlite 返回数据无法显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25284407/

相关文章:

ios - UIImageView+AFNetworking 处理大图的设备内存问题(泄漏?)

SQLite 表磁盘使用情况

ios - UNUserNotification iOS 11:关闭单个通知,而不是全部

ios - 将多个音频文件合并为一个

ios - 在 View Controller 中添加动态部分作为 subview

android - 在 Fragment 中运行的服务

iphone - OR 运算符在查询 sqlite iphone 中不起作用

c++ - 如何从sqlite中获取一条记录并显示在tableview中

Android:SQLite where 子句不会返回任何内容

iOS6隐藏状态栏