рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рддрд░рд╣, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИ - рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдФрд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рдЗрди рд╕рднреА рдЕрдВрддрд╣реАрди рднреНрд░реВрдг рдФрд░ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддрдм рдореИрдВрдиреЗ
ActiveRecord рдкреИрдЯрд░реНрди рдХреА рдЦреЛрдЬ рдХреА, рдЬрд┐рд╕рдХрд╛ рдЕрдХреНрд╕рд░ рд╣рдм рдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) Objective-C -
MagicalRecord рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рддрд▓реНрд▓реАрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ - рд╕рдм рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреГрд╖реНрда рдкрд░ рд╡рд░реНрдгрд┐рдд рдмрд╣реБрдд рд╕реБрд▓рдн рд╣реИред
рд╕рд░рд▓реАрдХрд░рдг рдореЗрдВ рдЕрдЧрд▓рд╛ рдХрджрдо рдмрд╛рд╣рд░ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдореИрдк рдХрд░рдирд╛ рдерд╛ред
рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдорд╛рдереЗ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ ManagedObject рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдореЗрдВ рдирд┐рдореНрди рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рдереА, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ JSON рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдкрд╛рд░ рдХрд░рддреА рд╣реИ:
- (void)mapPropertiesFrom:(NSDictionary *)dictonary { self.identifier = [NSNumber numberWithInt:[[dictonary objectForKey:@"id"] intValue]]; self.privacy = [NSNumber numberWithInt:[[dictonary objectForKey:@"public"] intValue]]; self.author = [KWUser findFirstByAttribute:@"profileId" withValue:[dictonary objectForKey:@"profile"]]; self.profileId = [NSNumber numberWithInt:[[dictonary objectForKey:@"profile"] intValue]]; self.latitude = [NSNumber numberWithDouble:[[dictonary objectForKey:@"lat"] doubleValue]]; self.longitude = [NSNumber numberWithDouble:[[dictonary objectForKey:@"lon"] doubleValue]]; self.text = [dictonary objectForKey:@"text"]; self.category = [dictonary objectForKey:@"category"]; self.firstName = [dictonary objectForKey:@"firstname"]; self.lastName = [dictonary objectForKey:@"lastname"]; }
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдРрд╕реА рдмрд╣реБрдд рд╕реА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдХреЗ рд╕рдВрдмрдВрдз рднреА рд╣реИрдВред рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдорди рдореЗрдВ рдЖрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ , рдЦреБрд╢рд┐рдпрд╛рдБ, рдореБрдЭреЗ рдкрд╣рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╛рдордиреЗ рдЖрдпрд╛ред
рдЬрд╛рджреБрдИ рдЖрдпрд╛рдд
MagicalImport рдЙрди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдЬреЛ MagicalRecord рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ JSON рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реАрдзреЗ рдХреЛрд░ рдбреЗрдЯрд╛ рдореЗрдВ рдореИрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдПрдХ рдЕрд╢реЛрднрдиреАрдп рдиреНрдпреВрдирддрдо рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЙрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рджреВрдВрдЧрд╛ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛
рд╣реИ ред рдЖрдЗрдП рд╣рдо рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Forsquare API рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЕрдиреБрд░реЛрдз рд▓реЗрдВ, рдЬреЛ рд╣рдореЗрдВ рдПрдлрд┐рд▓ рдЯреЙрд╡рд░ рдХреЗ рдкрд╛рд╕ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реМрдЯрд╛рдПрдЧрд╛ред
рдЕрдиреБрд░реЛрдз URL:
api.foursquare.com/v2/venues/search?v=20120602&ll=48.858%2C2.2944&client_secret=ILG5POWGBRBZDXLNPAGECAZOBC0KFPQAQ5SYOP51KFYANZ1B&client_id=HDEHROGPMARZ2O1JTK55VHXE4TTNGE0NQR4DBCKHFZULURJV>
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ AFNetworking рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдПрдкреАрдЖрдИ рдЖрд╡рд░рдг рд╡рд░реНрдЧ:
+ (LDFourSquareAPIClient *)sharedClient { static LDFourSquareAPIClient *_sharedClient = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedClient = [[LDFourSquareAPIClient alloc] initWithBaseURL:[NSURL URLWithString:kBaseURL]]; }); return _sharedClient; } - (id)initWithBaseURL:(NSURL *)url { if (self = [super initWithBaseURL:url]) { [self registerHTTPOperationClass:[AFJSONRequestOperation class]]; [self setDefaultHeader:@"Accept" value:@"application/json"]; } return self; }
рд╣рдо рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдмрдирд╛рддреЗ рд╣реИрдВ
NSString *latLon = @"48.858,2.2944"; NSString *clientID = [NSString stringWithUTF8String:kCLIENTID]; NSString *clientSecret = [NSString stringWithUTF8String:kCLIENTSECRET]; NSDictionary *queryParams; queryParams = [NSDictionary dictionaryWithObjectsAndKeys:latLon, @"ll", clientID, @"client_id", clientSecret, @"client_secret", @"20120602", @"v", nil];
kCLIENTID рдФрд░
kCLIENTSECRET рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдХреБрдВрдЬреА рд╣реИрдВред рдЖрдк рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд░реНрд╡рд░ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
[[LDFourSquareAPIClient sharedClient] getPath:@"v2/venues/search" parameters:queryParams success:^(AFHTTPRequestOperation *operation, id responseObject) { NSArray *venues = [[responseObject objectForKey:@"response"] objectForKey:@"venues"]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }];
рд╡реЗрдиреНрдпреВрдЬрд╝ рд╕рд░рдгреА рдореЗрдВ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рдореИрдк рдХрд░реЗрдВрдЧреЗред JSON рд╕реНрдерд▓ рдСрдмреНрдЬреЗрдХреНрдЯ:
categories = ( { icon = { name = ".png"; prefix = "https://foursquare.com/img/categories/building/default_"; sizes = ( 32, 44, 64, 88, 256 ); }; id = 4bf58dd8d48988d12d941735; name = "Monument / Landmark"; pluralName = "Monuments / Landmarks"; primary = 1; shortName = Landmark; } ); contact = { formattedPhone = "+33 892 70 12 39"; phone = "+33892701239"; }; hereNow = { count = 3; groups = ( { count = 3; items = ( ); name = "Other people here"; type = others; } ); }; id = 4adcda09f964a520dd3321e3; likes = { count = 0; groups = ( ); }; location = { address = "Parc du Champ de Mars"; city = Paris; country = France; crossStreet = "5 av. Anatole France"; distance = 42; lat = "48.85836229464931"; lng = "2.2945761680603027"; postalCode = 75007; state = "\U00cele de France"; }; name = "Tour Eiffel"; specials = { count = 0; items = ( ); }; stats = { checkinsCount = 31211; tipCount = 430; usersCount = 22307; }; url = "http://www.tour-eiffel.fr"; verified = 0; }
рдбреЗрдЯрд╛ рдореЙрдбрд▓
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рджреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ - рд╕реНрдерд╛рди рдФрд░ рд╕реНрдерд╛рди рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдзред


рдбреЗрдЯрд╛ рдЖрдпрд╛рдд
рдпрджрд┐ рд╕реЗрд╡рд╛ рдХреА JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 'рд╕рд╣реА' рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдореЙрдбрд▓ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд╣реИ, рддреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреВрд░реНрдг рдмреНрд▓реЙрдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
self.data = [Venue MR_importFromArray:venues];
рд╕рдВрдкреВрд░реНрдг рдбреЗрдЯрд╛ рд╕рд░рдгреА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛
Venue *myVenue = [Venue MR_importFromObject:[venues objectAtIndex:0]];
рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐
MR_importFromArray рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (
рдЧрд┐рдердм рдкрд░
рдЯрд┐рдХрдЯ ), рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
NSMutableArray *arr = [NSMutableArray array]; for (NSDictionary *venueDict in venues) { [arr addObject:[Venue MR_importFromObject:venueDict]]; } self.data = arr;
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣рдореЗрд╢рд╛ рд╣рдореЗрдВ рдЙрдирдХреА рд╕рдЯреАрдХрддрд╛ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд░рд┐рд╢реНрддреЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИрдВред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ UserInfo рд╢рдмреНрджрдХреЛрд╢ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ, рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рд╕рдВрдмрдВрдз рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╡рд┐рд╢реЗрд╖рддрд╛ рдореИрдкрд┐рдВрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ 'mappedKeyName' рдЬреЛрдбрд╝реА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ -'SON рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо ':

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗрд╡реАрд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рдореЙрдбрд▓ рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ (рд╣рдо рд╕реНрдЯреИрдЯреНрд╕ рдЗрдХрд╛рдИ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЪреЗрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ):

рдореЙрдбрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: MagicalImport рдСрдмреНрдЬреЗрдХреНрдЯNameID рдирд╛рдордХ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ рдпрд╛ рд╣рдо UserInfo рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рди рдФрд░ рд╕реНрдерд╛рди рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ):

рдореИрдВ 'рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА' рдХреЗ рд░реВрдк рдореЗрдВ рд▓реИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рд┐рд░реНрдл рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреЙрд▓рдмреИрдХ рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдпрд╛рдд рддрдВрддреНрд░ рдХреЙрд▓рдмреИрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдЬрд╛рдВрдЪрдиреЗ / рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (NSManagedObject рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЗ рдЕрдВрджрд░ рд▓рд╛рдЧреВ):
- willImport:
- didImport:
- shouldImport'relationshipName '(рдЖрдИрдбреА) рдбреЗрдЯрд╛:
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЪреЗрдХ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рд╕реНрдерд╛рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд┐рдирдореЗрдВ рдкрддрд╛ рд╣реИ:
- (BOOL)shouldImportLocation:(id)location { NSString *address = [location objectForKey:@"address"]; return address ? YES : NO; }
рдирд┐рд╖реНрдХрд░реНрд╖
рдорд╛рдирд╛ рдЙрджрд╛рд╣рд░рдг рддреБрдЪреНрдЫ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ MagicalImport рдХреА рд╕рднреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ (рд╕рд╛рде рд╣реА рдЗрд╕ рддрдереНрдп рдкрд░ рдХрд┐ рдЕрднреА рддрдХ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЙрди рд▓рд╛рднреЛрдВ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрд╕рдиреЗ рд╕реЛрдЪрд╛ рдерд╛: рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреА рдХрдореА рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд▓рдЪреАрд▓рд╛рдкрдиред рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордпред
рдЯреЗрд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред (CocoaPods рдХрд╛ рдЙрдкрдпреЛрдЧ MagicalRecord рдФрд░
AFNetworking рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред