Code Monkey home page Code Monkey logo

storez's Issues

Get all of a kind

Hi there!
How can I get all items stored under a certain Namespace? For example, I have the following namespace:

struct ListsNamespace: Namespace {
    static let id = "lists"
}

and I want to fetch all 'List' items.

Thanks!

Cannot create Custom objects

I try to create some custom objects,

struct StorezArray {
    var arrStr: [String]
}

extension StorezArray: UserDefaultsConvertible {
    typealias UserDefaultsType = String
    
    var encodeForUserDefaults: StorezArray.UserDefaultsType? {
        return arrStr.joined(separator: ";")
    }
    
    static func decode(userDefaultsValue value: StorezArray.UserDefaultsType) -> StorezArray? {
        return self.init(arrStr: value.components(separatedBy: ";"))
    }
}

but xcode always says

Type 'StorezArray' does not conform to protocol 'UserDefaultsConvertible'

even though i add the protocol stub

Cocoapods support

Probably makes sense to support Cocoapods using subspecs, so users can perhaps add support to Realm, SQLite, CoreData ... etc, without affecting light-weight stores.

the newest version build failed in carthage

build failed in carthage and when i build in Xcode i get the incurrent headers.
the season is like this:
The following build commands failed:
Check dependencies
(1 failure)
** BUILD FAILED **

The following build commands failed:
Check dependencies
(1 failure)
warning: no umbrella header found for target 'Storez-ios', module map will not be generated
warning: no umbrella header found for target 'Storez-ios', module map will not be generated
A shell task (/usr/bin/xcrun xcodebuild -workspace /Carthage/Checkouts/Storez/Storez.xcworkspace -scheme Storez-ios -configuration Release -sdk iphoneos ONLY_ACTIVE_ARCH=NO BITCODE_GENERATION_MODE=bitcode CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES clean build) failed with exit code 65:
--- xcodebuild: WARNING: Unable to open project file '
/Carthage/Checkouts/Storez/Playground/Playground.playground' in workspace '~/Carthage/Checkouts/Storez/Storez.xcworkspace'.
** CLEAN FAILED **

clear() does not seem to clear user defaults

The following code passes the first time. When the test is run a second time it fails.

func testUserDefaultsBuggyClear() {

    var testStore = UserDefaultsStore(suite: "io.kitz.storez.test")
    let key = Key<GlobalNamespace, Int?>(id: "foo", defaultValue: nil)

    testStore.clear()

    XCTAssertNil(testStore.get(key))
    testStore.set(key, value: 666)
    XCTAssertEqual(testStore.get(key), 666)

    testStore.clear()
    XCTAssertNil(testStore.get(key))

    testStore = UserDefaultsStore(suite: "io.kitz.storez.test")

    XCTAssertNil(testStore.get(key))

    testStore.set(key, value: 666)
}

Run the following code several times and it eventually will always pass:

func testUserDefaultsClear() {

    var testStore = UserDefaultsStore(suite: "io.kitz.storez.test")
    let key = Key<GlobalNamespace, Int?>(id: "foo", defaultValue: nil)

    testStore.clear()

    XCTAssertNil(testStore.get(key))
    testStore.set(key, value: 666)
    XCTAssertEqual(testStore.get(key), 666)

    testStore.clear()
    XCTAssertNil(testStore.get(key))

    testStore = UserDefaultsStore(suite: "io.kitz.storez.test")

    XCTAssertNil(testStore.get(key))

    testStore.set(key, value: 666)

    testStore.clear()
}

UserDefaults Migration

Add user defaults migration helper, which takes a list of of MigrationInfo. MigrationInfo is a struct that contains a KeyType to be migrated to, String which is the old key, and a processing block, that takes the old value and processes it to to return a new suitable value for KeyType.

This is the actual use case that I have. I have simplified it so it makes more sense:

old value: "CityId" -> "kw-city-asimah"
new key: "general-settings:city" -> ""

so, we can do this:

let migrationInfo = MigrationInfo(
  keyType = Key<GeneralSettings, City>(id: "city", defaultValue: City.asimah),
  oldKey = "CityId",
  processor = { oldValue in
    // process from a string to a City type
    return mydb.getCity(oldValue)
})

Carthage Support

As simple as adding a tag with the Carthage support badge. Well, the readme should probably be updated as well.

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.