【问题标题】:How to fetch data from sqlite db in list of objects in objective-c?如何从objective-c中的对象列表中的sqlite db获取数据?
【发布时间】:2016-07-19 11:15:52
【问题描述】:

我想在objective-c中以listArray的形式从sqlite db中获取数据(就像在java android中一样)。

这里我有这个的 java 类模型

如何将这些类转换为在减速(.h)和实现(.m)中混淆的目标 c 代码

第一类

public class RecordingList {

public  ArrayList<RecordingItem> Items = new ArrayList<RecordingItem>();
}

2 级

public class RecordingItem {

public int ID;
public String RecordingTitle;
public String RecordingSubTitle;
public String RecordingAudioPath;
public String RecordingDuration;
public String RecordingNotePath;
public String Date;
public String Time;
public String PlayListId;
public ArrayList<RecordingAttachments> recordingAttachmentses = new   ArrayList<RecordingAttachments>();
}

我已经尝试像这样在objective-c中获取数据

- (NSArray*) getAllNotes
    {
        const char *dbpath = [databasePath UTF8String];
        if (sqlite3_open(dbpath, &database) == SQLITE_OK)
        {
            NSString *querySQL = [NSString stringWithFormat:
                                  @"SELECT * FROM recordingItem"];
            const char *query_stmt = [querySQL UTF8String];
            NSMutableArray *resultArray = [[NSMutableArray alloc]init];
            if (sqlite3_prepare_v2(database,
                                   query_stmt, -1, &statement, NULL) == SQLITE_OK)
            {
                if (sqlite3_step(statement) == SQLITE_ROW)
                {
                    NSString *name = [[NSString alloc] initWithUTF8String:
                                      (const char *) sqlite3_column_text(statement, 0)];
                    [resultArray addObject:name];
                    NSString *department = [[NSString alloc] initWithUTF8String:
                                            (const char *) sqlite3_column_text(statement, 1)];
                    [resultArray addObject:department];
                    NSString *year = [[NSString alloc]initWithUTF8String:
                                      (const char *) sqlite3_column_text(statement, 2)];
                    [resultArray addObject:year];
                    return resultArray;
                }
                else{
                    NSLog(@"Not found");
                    return nil;
                }
                sqlite3_reset(statement);
            }
        }
        return nil;
    }

但这不是我想要的,我想在对象列表中获取数据我该怎么做?

提前致谢

【问题讨论】:

    标签: ios objective-c sqlite nsmutablearray


    【解决方案1】:

    首先,建议您自学Objective C 基础知识。之后,您将能够在几分钟内重写您的 Java 类。
    如果您不想使用CoreData(如果您只针对 iOS,建议使用它并且方便),那么数据获取怎么样,那么您可以使用例如。 FMDatabase 更易于使用,并且隐藏了您在此处编写的所有本机内容。
    另一个注意事项:您将namedepartmentyear 依次放入一个数组中,创建一个包含所有数据的 ObjC @interface

    @interface Data : NSObject
    
    @property (nonatomic, strong) NSString *name;
    @property (nonatomic, strong) NSString *department;
    @property (nonatomic, strong) NSString *year;
    
    @end
    

    并像这样使用它:

    NSMutableArray *resultArray = [NSMutableArray new];
    // fetch ...
    Data *data = [[Data alloc] init];
    data.name = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
    // other fields ...
    [resultArray addObject:data];
    

    另一个注意事项:you can now create 参数数组,就像在 Java 中一样。

    【讨论】:

    • @NisarAhmad 在这里最好的感谢是投票回答;)
    猜你喜欢
    • 2016-06-30
    • 2011-04-21
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多