From c6707b991706868eed6e0c8b1e28753ec9dff4ca Mon Sep 17 00:00:00 2001 From: Nam Kennic Date: Thu, 14 Jan 2021 15:47:35 +0700 Subject: [PATCH 1/5] isDataAvailableForKey is now public to easier to check data available for key, you don't need to fetch all data to get a certain data. --- Parse/Parse/Internal/Object/PFObjectPrivate.h | 2 -- Parse/Parse/PFObject.h | 7 +++++++ Parse/Parse/PFObject.m | 5 ++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Parse/Parse/Internal/Object/PFObjectPrivate.h b/Parse/Parse/Internal/Object/PFObjectPrivate.h index 93835c46e..a1f1c24d6 100644 --- a/Parse/Parse/Internal/Object/PFObjectPrivate.h +++ b/Parse/Parse/Internal/Object/PFObjectPrivate.h @@ -198,8 +198,6 @@ - (void)setHasBeenFetched:(BOOL)fetched; - (void)_setDeleted:(BOOL)deleted; -- (BOOL)isDataAvailableForKey:(NSString *)key; - - (BOOL)_hasChanges; - (BOOL)_hasOutstandingOperations; - (PFOperationSet *)unsavedChanges; diff --git a/Parse/Parse/PFObject.h b/Parse/Parse/PFObject.h index 7e6ae7505..e45939520 100644 --- a/Parse/Parse/PFObject.h +++ b/Parse/Parse/PFObject.h @@ -395,6 +395,13 @@ NS_REQUIRES_PROPERTY_DEFINITIONS */ @property (nonatomic, assign, readonly, getter=isDataAvailable) BOOL dataAvailable; +/** + Gets whether the `PFObject` has data for given key + + @return `YES` if data is available for given key + */ +- (BOOL)isDataAvailableForKey:(NSString *)key; + #if TARGET_OS_IOS /** diff --git a/Parse/Parse/PFObject.m b/Parse/Parse/PFObject.m index 657207dd4..39414d33c 100644 --- a/Parse/Parse/PFObject.m +++ b/Parse/Parse/PFObject.m @@ -2142,9 +2142,8 @@ - (void)setObject:(id)object forKeyedSubscript:(NSString *)key { - (id)objectForKey:(NSString *)key { @synchronized (lock) { - PFConsistencyAssert([self isDataAvailableForKey:key], - @"Key \"%@\" has no data. Call fetchIfNeeded before getting its value.", key); - + if (![self isDataAvailableForKey:key]) { return nil } + id result = _estimatedData[key]; if ([key isEqualToString:PFObjectACLRESTKey] && [result isKindOfClass:[PFACL class]]) { PFACL *acl = result; From d0c3d97b927587d45f1a28940405e711d0deb633 Mon Sep 17 00:00:00 2001 From: Nam Kennic Date: Thu, 14 Jan 2021 16:02:20 +0700 Subject: [PATCH 2/5] no message --- Parse/Parse/PFObject.m | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Parse/Parse/PFObject.m b/Parse/Parse/PFObject.m index 39414d33c..249e9a844 100644 --- a/Parse/Parse/PFObject.m +++ b/Parse/Parse/PFObject.m @@ -743,19 +743,6 @@ - (void)_setDeleted:(BOOL)deleted { } } -- (BOOL)isDataAvailableForKey:(NSString *)key { - if (!key) { - return NO; - } - - @synchronized (lock) { - if (self.dataAvailable) { - return YES; - } - return [_availableKeys containsObject:key]; - } -} - ///-------------------------------------- #pragma mark - Validations ///-------------------------------------- @@ -2030,6 +2017,19 @@ - (BOOL)isDataAvailable { return self._state.complete; } +- (BOOL)isDataAvailableForKey:(NSString *)key { + if (!key) { + return NO; + } + + @synchronized (lock) { + if (self.dataAvailable) { + return YES; + } + return [_availableKeys containsObject:key]; + } +} + - (instancetype)refresh { return [self fetch]; } From 804445f97a2c25a80369b7853387771ff9ab119a Mon Sep 17 00:00:00 2001 From: Nam Kennic Date: Thu, 14 Jan 2021 16:08:17 +0700 Subject: [PATCH 3/5] no message --- Parse/Parse/PFObject.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Parse/Parse/PFObject.m b/Parse/Parse/PFObject.m index 249e9a844..7b2a92555 100644 --- a/Parse/Parse/PFObject.m +++ b/Parse/Parse/PFObject.m @@ -2142,7 +2142,9 @@ - (void)setObject:(id)object forKeyedSubscript:(NSString *)key { - (id)objectForKey:(NSString *)key { @synchronized (lock) { - if (![self isDataAvailableForKey:key]) { return nil } + if (![self isDataAvailableForKey:key]) { + return nil; + } id result = _estimatedData[key]; if ([key isEqualToString:PFObjectACLRESTKey] && [result isKindOfClass:[PFACL class]]) { From 6ee5174e9e629e48b215f557bfeb4647f613bd15 Mon Sep 17 00:00:00 2001 From: Nam Kennic Date: Thu, 14 Jan 2021 16:38:13 +0700 Subject: [PATCH 4/5] Fixed testObjectForUnavailableKey in ObjectUnitTests --- Parse/Tests/Unit/ObjectUnitTests.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Parse/Tests/Unit/ObjectUnitTests.m b/Parse/Tests/Unit/ObjectUnitTests.m index 56b7333f3..e1cf902ac 100644 --- a/Parse/Tests/Unit/ObjectUnitTests.m +++ b/Parse/Tests/Unit/ObjectUnitTests.m @@ -106,7 +106,7 @@ - (void)testObjectForKey { - (void)testObjectForUnavailableKey { PFObject *object = [PFObject objectWithoutDataWithClassName:@"Yarr" objectId:nil]; - PFAssertThrowsInconsistencyException(object[@"yarr"]); + XCTAssertNil(object[@"yarr"]); } - (void)testSettersWithNilArguments { From cd61ff7f7867dc7319382913facadbe6d0684421 Mon Sep 17 00:00:00 2001 From: Nam Kennic Date: Wed, 20 Jan 2021 11:16:30 +0700 Subject: [PATCH 5/5] removed unused code --- ParseUI/Classes/SignUpViewController/PFSignUpView.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ParseUI/Classes/SignUpViewController/PFSignUpView.m b/ParseUI/Classes/SignUpViewController/PFSignUpView.m index e75918752..16a5a689a 100644 --- a/ParseUI/Classes/SignUpViewController/PFSignUpView.m +++ b/ParseUI/Classes/SignUpViewController/PFSignUpView.m @@ -213,7 +213,7 @@ - (void)layoutSubviews { frame.origin.y = currentY + loginButtonTopInset; _signUpButton.frame = frame; - currentY = CGRectGetMaxY(frame); +// currentY = CGRectGetMaxY(frame); } }