An open API service indexing awesome lists of open source software.

https://github.com/simplisticated/hammer

Powerful tool for managing objects
https://github.com/simplisticated/hammer

architecture classes nsobject patterns swift

Last synced: about 2 months ago
JSON representation

Powerful tool for managing objects

Awesome Lists containing this project

README

        


Hammer














## At a Glance

`Hammer` is a powerful tool for solving common tasks with classes and objects.

## How To Get Started

- Copy content of `Source` folder to your project.

or

- Use `Hammer` cocoapod

## Requirements

* iOS 9 and later
* Xcode 9 and later
* Swift 4

## Usage

### Class Name

Retrieve class name:

```swift
let classNameWithNamespace = MainViewController.hmr.fullName // "MyApplication.MainViewController"
let classNameWithoutNamespace = MainViewController.hmr.shortName // "MainViewController"
```

### Object Conversions

Use object in external closure:

```swift
let label = UILabel().hmr.use { (label) in
label.text = "This is a label"
}.object
```

Use object converted to another type in external closure:

```swift
let view = SomeView().hmr.use(as: UILabel.self) { (label) in
label.text = "This is a label"
}.object
```

### Object Retaining

Retain any object:

```swift
object.hmr.hold()
```

Release the object:

```swift
object.hmr.free()
```

### Container

Any object can be easily wrapped by special container:

```swift
let number: NSNumber? = nil

let container = number.hmr.wrap()
container.value // nil
container.isNil // true
```

### Just for Fun

You can replace `hmr` with hammer emoji:

```swift
let classNameWithNamespace = MainViewController.🔨.fullName
let classNameWithoutNamespace = MainViewController.🔨.shortName

let view = SomeView().🔨.use(as: UILabel.self) { (label) in
label.text = "This is a label"
}.object

// etc.
```

## License

`Hammer` is available under the MIT license. See the [LICENSE](./LICENSE) file for more info.