GithubHelp home page GithubHelp logo

changsanjiang / sjsqlite3 Goto Github PK

View Code? Open in Web Editor NEW
115.0 3.0 24.0 16.82 MB

DatabaseMapping. database mapping. Automatically create tables based on the model. 数据库模型映射. 自动建表, 自动更新表. 增删改查一句话搞定. 支持模糊查询, 各种插入和更新, 支持存储模型数组. pod SJSQLite3

License: MIT License

Ruby 1.30% Objective-C 98.70%
sqlite3 modelmapping database-mapping object-mapping object-mapper object-to-database-mapping

sjsqlite3's People

Contributors

changsanjiang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

sjsqlite3's Issues

不支持继承

父类的属性无法添加到数据库,我大概改了下源码支持了,但是不知是否会带来隐含的坑,还请作者指教下。
static NSMutableArray<NSString*>* _sj_get_tab_ivar_list_contain_inherit(Class cls)
{
NSString *clsStr = NSStringFromClass(cls);
NSMutableArray *finalIvarResult = @[].mutableCopy;

while (![clsStr isEqualToString:@"NSObject"] && clsStr) {
    NSArray<NSString *> *ignoredIvarList = nil;
    if ( [(Class)cls respondsToSelector:@selector(tab_ignoredIvarList)] ) {
        ignoredIvarList = [(Class)cls tab_ignoredIvarList];
    }
    
    NSMutableArray *ivarListArrM = [NSMutableArray array];
    unsigned int outCount = 0;
    Ivar *ivarList = class_copyIvarList(cls, &outCount);
    if ( !ivarList ) return nil;
    if ( 0 == outCount ) return nil;
    for ( int i = 0 ; i < outCount ; ++i ) {
        const char *name = ivar_getName(ivarList[i]);
        NSString *nameStr = [NSString stringWithUTF8String:name];
        if ( [ignoredIvarList containsObject:nameStr] )
            continue;
        [ivarListArrM addObject:nameStr];
    }
    free(ivarList);
    [finalIvarResult addObjectsFromArray:ivarListArrM];
    
    cls = class_getSuperclass(cls);
    clsStr = NSStringFromClass(cls);
}
return finalIvarResult;

}

static NSArray<NSString *> *sj_get_tab_ivar_list(Class cls) {
NSString *clsStr = NSStringFromClass(cls);
static NSMutableDictionary<NSString *, NSArray<NSString *> *> *data;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
data = [NSMutableDictionary new];
});

if ( !data[clsStr] ) {
    data[clsStr] = _sj_get_tab_ivar_list_contain_inherit(cls).copy;
}

return data[clsStr];

}

关于以后的版本

我准备写一个新的映射库, 新的代码还会放到这个项目中, SJDBMap 之后只会修复可能出现的Bug.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.