Skip to content

Commit

Permalink
feat: Add PFObject.fromDictionary to create an object from dictiona…
Browse files Browse the repository at this point in the history
…ry (#1834)
  • Loading branch information
dplewis authored Jan 28, 2025
1 parent 1169a0b commit e197cfa
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
13 changes: 13 additions & 0 deletions Parse/Parse/Source/PFObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -880,6 +880,19 @@ NS_REQUIRES_PROPERTY_DEFINITIONS
withName:(NSString *)name
block:(nullable PFBooleanResultBlock)block;

///--------------------------------------
#pragma mark - Serialization
///--------------------------------------

/**
Creates a PFObject from a dictionary object.
@param dictionary Undecoded dictionary.
@param defaultClassName The className of the resulting object if none is given by the dictionary.
*/
+ (id)fromDictionary:(NSDictionary *)dictionary
defaultClassName:(NSString *)defaultClassName;

@end

NS_ASSUME_NONNULL_END
7 changes: 7 additions & 0 deletions Parse/Parse/Source/PFObject.m
Original file line number Diff line number Diff line change
Expand Up @@ -809,6 +809,13 @@ - (BOOL)resolveLocalId:(NSError *__autoreleasing*)error {
return YES;
}

+ (id)fromDictionary:(NSDictionary *)dictionary
defaultClassName:(NSString *)defaultClassName {
return [self _objectFromDictionary:dictionary
defaultClassName:defaultClassName
completeData:YES];
}

+ (id)_objectFromDictionary:(NSDictionary *)dictionary
defaultClassName:(NSString *)defaultClassName
completeData:(BOOL)completeData {
Expand Down
9 changes: 9 additions & 0 deletions Parse/Tests/Unit/ObjectUnitTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -361,4 +361,13 @@ -(void)testLocalRESTEncoding {
XCTAssertNil(error);
}

- (void)testFromDictionary {
NSDictionary *dict = @{ @"objectId": @"XYZ", @"score" : @1.0 };
PFObject *object = [PFObject fromDictionary:dict
defaultClassName:@"Test"];

XCTAssertEqualObjects(dict[@"objectId"], object.objectId);
XCTAssertEqualObjects(dict[@"score"], object[@"score"]);
}

@end

0 comments on commit e197cfa

Please sign in to comment.