Skip to content

Commit e197cfa

Browse files
authored
feat: Add PFObject.fromDictionary to create an object from dictionary (#1834)
1 parent 1169a0b commit e197cfa

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

Parse/Parse/Source/PFObject.h

+13
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,19 @@ NS_REQUIRES_PROPERTY_DEFINITIONS
880880
withName:(NSString *)name
881881
block:(nullable PFBooleanResultBlock)block;
882882

883+
///--------------------------------------
884+
#pragma mark - Serialization
885+
///--------------------------------------
886+
887+
/**
888+
Creates a PFObject from a dictionary object.
889+
890+
@param dictionary Undecoded dictionary.
891+
@param defaultClassName The className of the resulting object if none is given by the dictionary.
892+
*/
893+
+ (id)fromDictionary:(NSDictionary *)dictionary
894+
defaultClassName:(NSString *)defaultClassName;
895+
883896
@end
884897

885898
NS_ASSUME_NONNULL_END

Parse/Parse/Source/PFObject.m

+7
Original file line numberDiff line numberDiff line change
@@ -809,6 +809,13 @@ - (BOOL)resolveLocalId:(NSError *__autoreleasing*)error {
809809
return YES;
810810
}
811811

812+
+ (id)fromDictionary:(NSDictionary *)dictionary
813+
defaultClassName:(NSString *)defaultClassName {
814+
return [self _objectFromDictionary:dictionary
815+
defaultClassName:defaultClassName
816+
completeData:YES];
817+
}
818+
812819
+ (id)_objectFromDictionary:(NSDictionary *)dictionary
813820
defaultClassName:(NSString *)defaultClassName
814821
completeData:(BOOL)completeData {

Parse/Tests/Unit/ObjectUnitTests.m

+9
Original file line numberDiff line numberDiff line change
@@ -361,4 +361,13 @@ -(void)testLocalRESTEncoding {
361361
XCTAssertNil(error);
362362
}
363363

364+
- (void)testFromDictionary {
365+
NSDictionary *dict = @{ @"objectId": @"XYZ", @"score" : @1.0 };
366+
PFObject *object = [PFObject fromDictionary:dict
367+
defaultClassName:@"Test"];
368+
369+
XCTAssertEqualObjects(dict[@"objectId"], object.objectId);
370+
XCTAssertEqualObjects(dict[@"score"], object[@"score"]);
371+
}
372+
364373
@end

0 commit comments

Comments
 (0)