Comments (6)
Well, I don't think so.
In my opinion, retrieving value with subscript is still in the context of JSON,when and only when the time you try to cast the real value out from JSON should then be an Optional.
Additionally it also makes it possible to trace the breaking point of the subscript chain.
from swiftyjson.
Whenever a subscript object can not be guaranteed to exist, it would seem logical to cast it as an optional in order to avoid people assuming that it should exist. This is an issue that JSON is specifically susceptible to since people will often treat elements of a JSON object as being required, when in reality, it can only be assumed that it will usually exist, though it is not guaranteed.
from swiftyjson.
I think that if the value exists, the code returns the value, if not, the code returns something about which subscript is nil. This may be very helpful when my json data has many levels. For example:{foo:{bar:{x:{y:"value"}}}}
. When I type some code like: json['foo']['bar']['z']['y'].string, I want to know that the subscript "z" isn't exist, not only return nil.
from swiftyjson.
@liuchunyao90 try this
if let string = json['foo']['bar']['z']['y'].string {
// do something you like
} else {
// print the error
println(json['foo']['bar']['z']['y'])
}
or
if let error = json["a"]["b"]["c"]["d"][0].error {
//done. the json is the same like you expect
} else {
// print the error
println(error)
}
from swiftyjson.
Maybe it will be nice to use library like this?
switch (json['foo']['bar']['z']['y'].stringOrError()) {
case .Error(let error):
break;
case .Some(let some):
break;
}
this method should be like this:
func stringOrError() -> OptionalError<String>
where OptionalError
should be like this:
enum OptionalError<T> {
case Error(NSError)
case Some(T)
}
from swiftyjson.
@FlappyHeart you really need to know this in run time? Structure format should be selected in compile time mostly.
from swiftyjson.
Related Issues (20)
- How to test if a property exists on a JSON object? HOT 1
- How to read emojis in JSON
- Warning that in Swift 6 will be an error HOT 13
- Type 'Any' is not optional, value can never be nil; this is an error in Swift 6 HOT 2
- How to update a field of a SwiftyJSON object
- New version release - When? HOT 11
- Json cert
- Recommended way to conform `JSON` to `Hashable` HOT 4
- Empty dictionary object cannot insert data HOT 2
- unwrap crash HOT 1
- Privacy manifest required by Apple HOT 9
- Errors in readme HOT 1
- Privacy Manifest HOT 5
- Is this repository no longer maintained? why? HOT 4
- STACK CANARY problem
- Privacy manifest for application
- PrivacyInfo file HOT 1
- Update to 5.0.2 with cocoapods HOT 10
- Private library that relies on SwiftyJSON, pod lib lint cannot pass HOT 8
- 特殊符号
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 swiftyjson.