Code Monkey home page Code Monkey logo

Comments (8)

Damonvvong avatar Damonvvong commented on May 10, 2024

如果采用上面的设计。

- (BOOL)setObject:(id)object forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:));

就可以采用另外的方式实现。

- (BOOL)setObject:(id<NSCoding>)value forKey:(NSString *)key {
    if (key.length <= 0) {
        return NO;
    }
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:obj];
    return [self setData:data forKey:key];
}

from mmkv.

Damonvvong avatar Damonvvong commented on May 10, 2024

这样子在 getValue 的时候不再需要传入对应的 class 了。

- (id)getObjectForKey:(NSString *)key {
    if (key.length <= 0) {
        return nil;
    }
    NSData *data = [self getDataForKey:key];
    if (data.length > 0) {
        return [NSKeyedUnarchiver unarchiveObjectWithData:data];
    }
    return nil;
}

from mmkv.

lingol avatar lingol commented on May 10, 2024

Because we don't want anything to do with NSCoding. MMKV is designed to be generic purpose. Being generic means you can archive your object into data by using any algorithm you like, such as protobuf. In fact, we get something called PBCoding inside WeChat, which looks like NSCoding, but use protobuf protocol to archive/unarchive object.

As #10 has suggested, we might add a setObject:(id<NSCoding>)value forKey:(NSString*)key interface in the future. That is under consideration.

from mmkv.

Damonvvong avatar Damonvvong commented on May 10, 2024

恩,我大致了解了你们内部有一个 PBCoding 的东西。所以理解了你们做的方式。

但是开源的部分是没有 PBCoding 的。所以现在使用起来相对是有点变扭的。你觉得呢?

期待后续改动,我先自己项目适配一下吧~

from mmkv.

Damonvvong avatar Damonvvong commented on May 10, 2024

可以有新的 pod 版本吗?我这边要做一些项目定制化,需要一个支持 Swift 改版的 pod

在 podspec 中无法指定分支。

from mmkv.

lingol avatar lingol commented on May 10, 2024

可以有新的 pod 版本吗?我这边要做一些项目定制化,需要一个支持 Swift 改版的 pod

在 podspec 中无法指定分支。

The changes made on Swift interface has been merged into master. But a new release is not ready yet. For the time being, you can change your pod file as bellow:
pod 'MMKV', :git => 'https://github.com/Tencent/MMKV.git'
A fresh pull of master should suit your need.

from mmkv.

Damonvvong avatar Damonvvong commented on May 10, 2024

恩恩,辛苦了~

from mmkv.

lingol avatar lingol commented on May 10, 2024

Supported with #78 , checkout release note.

from mmkv.

Related Issues (20)

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.