ios - 如何从 objective-c 中的对象列表中的 sqlite 数据库中获取数据?

标签 ios objective-c sqlite nsmutablearray

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

我这里有 java 类模型

我如何将这些类转换为在减速(.h)和实现(.m)中混淆的 Objective-C 代码

1 级

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;
    }

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

提前致谢

最佳答案

首先,建议您自己从 Objective C 基础知识开始。之后,您将能够在几分钟内重写您的 Java 类。
如果您不想使用CoreData,那么数据获取又如何呢? (如果您仅针对 iOS,推荐使用该方法,并且很方便),那么您可以使用例如。 FMDatabase它更容易使用,并且隐藏了您在此处编写的所有 native 内容。
再注意一点:你把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 中一样。

关于ios - 如何从 objective-c 中的对象列表中的 sqlite 数据库中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36325989/

相关文章:

c++ - 数据未插入 sqlite 表 c++

ios - map 共享应用程序中的谷歌地图方向到个性化注释

objective-c - 使用ExtAudioFile read读取音频文件时,是否可以不连续读取音频 float ?

python - 将 Sqlite 数据导入 Google App Engine

objective-c - 将 NSString 转换为 NSData 会强制尾随字节吗?

ios - iOS iBeacon 如何设置扫描间隔时间?

c# - 从单个字符串列请求 1..N 值时,QueryAsync() 返回什么?

ios - 非动画滚动 WKInterfaceTable 到底部

objective-c - 修改 iOS 中的 BOOL 内部方法

ios - 缺少导出合规信息 - iTunes Connect/TestFlight