Comments (5)
Will try to figure out how to make this more user friendly. Have some ideas.
from rxswift.
Hm, I've tried to play with some ideas, but I don't right now I don't see a way to trick Swift compiler into some kind of default return value.
@mbalex99 Do you have some ideas?
I've documented everything here https://github.com/kzaher/RxSwift/blob/master/Documentation/GettingStarted.md#kvo
Don't see we can do anything else. I've thought about adding rx_observeAnyObject -> Observable<AnyObject?>
but it seems ugly, and it doesn't really solve the original issue.
Let me know what do you think.
from rxswift.
I think rx_observeAsAnyObject
or yet rx_observeKVO
You can't easily cast generic's types. It's not good practice. So I think explicitly having rx_observeAsAnyObject makes it clear that you'll have to cast it yourself. It should be okay in the mean time.
Maybe an option is to transform the KVO object into a Variable then just make rx_observe as an alias to that value.
from rxswift.
Hm,
I guess I can add rx_observeAsAnyObject(...) -> Observable<AnyObject?>
, and write it in front of other overloads to allow users to more easily express that they want AnyObject
as return type. I understand that people have different backgrounds, and I don't want to make more confusing then the problem requires.
I would really like to maintain current api because correctly unwrapping CGPoint
and other structs is not so trivial as one might think :)
This is the code needed to correctly unwrap CGRect
, it's not just as!
:)
#if arch(x86_64) || arch(arm64)
let CGRectType = "{CGRect={CGPoint=dd}{CGSize=dd}}"
#elseif arch(i386) || arch(arm)
let CGRectType = "{CGRect={CGPoint=ff}{CGSize=ff}}"
#endif
// rx_observe + CoreGraphics
extension NSObject {
public func rx_observe(keyPath: String, options: NSKeyValueObservingOptions = NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, retainSelf: Bool = true) -> Observable<CGRect?> {
return rx_observe(keyPath, options: options, retainSelf: retainSelf) as Observable<NSValue?>
>- map { value in
if let value = value {
if strcmp(value.objCType, CGRectType) != 0 {
return nil
}
var typedValue = CGRect(x: 0, y: 0, width: 0, height: 0)
value.getValue(&typedValue)
return typedValue
}
else {
return nil
}
}
}
Do you think that adding rx_observeAsAnyObject(...) -> Observable<AnyObject?>
would solve your concern?
Any other opinions/suggestions on this?
from rxswift.
I guess this has been addressed in the development cycle of RxSwift 2.0.
I will close this issues, if anyone has something interesting to say about this, please consider opening a new issue referring to this one. :)
from rxswift.
Related Issues (20)
- Missing imports warn 'this is an error in Swift 6'
- docs.rxswift.org (RxSwift Reference) - all links to Documentation/[FILENAME].md are broken HOT 1
- Crash app Xcode 15 HOT 3
- Crash: value tried to resume its continuation more than once HOT 2
- Any support/plan of Privacy Manifest? HOT 119
- Deprecated code warnings in playground Filtering_and_Conditional_Operators.xcplaygroundpage HOT 1
- -[RxCocoa.RxTextViewDelegateProxy text]: unrecognized selector sent to instance 0x28132bdb0 HOT 2
- asSingle -> Sequence contains more than one element. HOT 5
- Update
- Cocoapods trunk push verification fails on pods dependent on RxSwift using Xcode 15+ HOT 4
- ConnectableObservable cannot connect once it was disposed HOT 2
- Why is the https://api.snapkit.com initialized before FinishLaunchingWithOptions? HOT 1
- drive's onNext closure should be main actor isolated HOT 1
- No available version for github "ReactiveX/RxSwift" satisfies the requirement: == 6.6.0 HOT 4
- Using in a React Native Native Module crashes with outlined init with copy of Disposable HOT 7
- Proposal, add overlapping buffers. HOT 2
- withLatestFrom *only* takes immediate values it does not wait for deferred events from the `second` observable HOT 10
- `asSingle()` to automatically run `take(1)` beforehand HOT 17
- need add PrivacyInfo.xcprivacy HOT 1
- Need add PrivacyInfo.xcprivacy after 2024.5.1 HOT 1
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 rxswift.