Comments (9)
What about treat those cases similar to how Plank deals with NSDate
?
The JSON value could be "any" string and with format you would define what kind of class it should be.
This way the responsibility would be up to each developer and not to Plank itself.
from plank.
I think there is value in having other concrete types like UIColor
but I'd want to avoid having id
as a type since we lose pretty much any safety or usage guarantees for that property.
from plank.
For example, I would like to use plank to generate objects for use in Texture, and sometimes these objects have a userInfo
field that stores a plain id
so that the user can attach arbitrary context info to something like a an image request. That would be one great use case for this.
from plank.
@Adlai-Holler - currently we offer things like serialization, copying support for all properties, how do you propose handling this in the case of id
?
from plank.
Also what would the value of type
be for this in the JSON schema?
from plank.
@Adlai-Holler @rahul-malik I think we'd likely make use of this in our composer rewrite
from plank.
For serialization, I think we could start with not serializing it. I don't know what the extensibility rules for JSON schema are, but maybe we could offer a hatch like, throwing this out there, "type": "$objc(id)"
The bigger question is whether plank is/should be suitable for generating non-serialized plain-old-NS-objects for use inside the app, or if it should be specialized for talking with a server.
Texture, for example, could make great use of a solid ObjC code generator.
from plank.
The main question for me is does it make sense to create types with properties of unknown types. I think id
ends up reducing type-safety and could introduce more issues than it solves.
The only thing that is JSON / Server specific currently is the assumption that dictionaries always use NSString
as the key type.
That said, I think there is probably value in having a way to have users declare type extensions outside of the ones listed in JSONSchema and it would be up to them to declare what the corresponding type is for each supported language they wish to generate.
from plank.
@Adlai-Holler - working on a proposal to allow custom type extensions making plank a whole lot more flexible. I’ll forward when I have something to review
from plank.
Related Issues (20)
- Update Maven Bazel integration to new rules
- Add support for AndroidX nullability annotations HOT 1
- required fields don't do anything in Java HOT 2
- Java model _bits property should be transient HOT 2
- Java model's Builder-setters should annotate parameter with @Nullable or @NonNull
- Java model Builder.build() method should be annotated with @NonNull HOT 1
- Java model - mergeFrom should be annotated with @NonNull
- Java model Builders should apply @NonNull annotation to its getter methods if appropriate HOT 1
- Java model builders should order the fields checked in `equals()`
- Make it easier to detect use of outdated Plank binary HOT 3
- Custom merge strategies (Java) HOT 2
- Use Kotlin-friend Java method names for Boolean accessors
- Support nested object definitions
- Source code checksum changed HOT 6
- Java documentation is outdated
- Title field is not save when creating Pin from a direct link
- Any plans for dart/flutter support? HOT 1
- 'extends' isn't not a keyword in JSON-schema spec HOT 2
- iOS plank -initWithModelDictionary:error: assumes dictionary is dictionary
- [Security] Workflow ci.yml is using vulnerable action actions/checkout
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from plank.