gpt4 book ai didi

ios - 如何在 iOS 中从 sqlite 数据库检索和存储 NSArray

转载 作者:行者123 更新时间:2023-11-28 20:20:11 25 4
gpt4 key购买 nike

我有一个数组 itemQtyArray,我存储在 SQLITE 表中:

    NSData *toData = [NSKeyedArchiver archivedDataWithRootObject:self.itemQtyArray];

NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO ORDERTABLE(ITEMDESC,ITEMQTY)VALUES( \"%@\",\"%@\");",dataString2,toData];

然后我检索为:

    const void *itemQty = sqlite3_column_text(statement, 2);
NSInteger qtyBytes = sqlite3_column_bytes(statement, 2);
NSData *data2 = [NSData dataWithBytes:itemQty length:qtyBytes];
NSArray *myArrayFromDB = [[NSArray alloc]init];
myArrayFromDB = [NSKeyedUnarchiver unarchiveObjectWithData:data2];
[self.itemQtyArray addObjectsFromArray:myArrayFromDB];

但是我在行中遇到异常

    myArrayFromDB = [NSKeyedUnarchiver unarchiveObjectWithData:data2];

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:

    '-[__NSCFData objectForKey:]: unrecognized selector sent to instance

请告诉我哪里不对

最佳答案

NSData *toData = [NSKeyedArchiver archivedDataWithRootObject:array];

你应该传递 NSDictionary 而不是这个

NSData *toData = [NSKeyedArchiver archivedDataWithRootObject:dictionary];

o 将通用数组转换为 NSData,您需要一个存档器!如果你知道如何提供 NSData,你就知道如何使用 NSKeyedArchiver。所以:

NSArray* array= ... ;
NSData* data=[NSKeyedArchiver archivedDataWithRootObject:array];

当然,数组中的所有元素都需要实现 NSCoding协议(protocol)

关于ios - 如何在 iOS 中从 sqlite 数据库检索和存储 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16355079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com