我是 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
对象;因此 NSLog
ing 它,你只会看到对象的内存地址。如果您想查看数组中单个 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/