Maison > Questions et réponses > le corps du texte
大家晚上好,sqlite 能够保存对象吗,如果不行,那么怎么查出来再转为模型呢?
黄舟2017-04-18 09:49:39
Bien sûr, les objets peuvent être sauvegardés. . . SQLite est une base de données légère. . Si vous utilisez SQLite, vous pouvez uniquement trouver les données, puis allouer l'objet OC, puis l'attribuer. . . Si vous souhaitez réaliser une implémentation automatique, vous pouvez envisager CoreData
阿神2017-04-18 09:49:39
Il peut être enregistré. Si c'était moi, j'utiliserais JSON pour le transférer Lorsqu'il sera entré dans la base de données, ce sera une chaîne JSON, et lorsqu'il sera retiré, il sera transféré vers l'objet. . D'autres sont également disponibles, cela dépend de vos préférences.
Si vous souhaitez éviter les ennuis, vous pouvez utiliser Realm pour accéder directement aux objets. Bien sûr, il y a des défauts et des pièges. Nous l'utilisons dans un environnement de production depuis 2 ans
黄舟2017-04-18 09:49:39
Vous pouvez utiliser fmdb pour rechercher les données et les convertir en un tableau de dictionnaire, puis convertir le dictionnaire en modèle. C'est ainsi que je procède habituellement
. NSMutableArray* collectedFood = [NSMutableArray array];
FMDatabase* dataBase = [FMDatabase databaseWithPath:[self dbPath]];
BOOL open = [dataBase open];
if (open) {
NSString* selectSql = @"select * from foodCollection order by id desc";
FMResultSet* result = [dataBase executeQuery:selectSql];
while (result.next) {
YYFoodModel* foodModel = [[YYFoodModel alloc] init];
foodModel.id = [result stringForColumn:@"foodId"];
foodModel.name = [result stringForColumn:@"name"];
foodModel.pic = [result stringForColumn:@"pic"];
NSData* data = [result dataForColumn:@"measure"];
foodModel.measure = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
foodModel.cal = [result stringForColumn:@"cal"];
foodModel.calOfPerG = [result doubleForColumn:@"calOfPerG"];
foodModel.util = [result stringForColumn:@"util"];
foodModel.calOfUtil = [result stringForColumn:@"calOfUtil"];
foodModel.cnt = [result stringForColumn:@"cnt"];
foodModel.food_measure = [result stringForColumn:@"food_measure"];
foodModel.food_cal = [result stringForColumn:@"food_cal"];
foodModel.checked = [result stringForColumn:@"checked"];
foodModel.remark = [result stringForColumn:@"remark"];
foodModel.desc_url = [result stringForColumn:@"desc_url"];
[collectedFood addObject:foodModel];
}
[dataBase close];
}
return collectedFood;
高洛峰2017-04-18 09:49:39
Utiliser le domaine, la base de données, sqlite est plus gênant et nécessite que le modèle et la base de données se convertissent. Mais Swift ne prend pas en charge la réflexion, vous devez donc soit écrire le processus de conversion à la main, soit le modèle hérite de NSObject