Search code examples
iosnsarray

Inserting data into a custom object


I am still somewhat new to ObjC, so please forgive me if my terminology is off.

I have a webservice which returns the following event data in an array:

  • eventName
  • eventAddress
  • eventCity

The webservice array varies in size from time to time, depending on how many events are happening on a certain day.

My problem is that I need to pull this webservice data into a custom class(RandomEvent) automatically, but I'm not sure how to do it exactly.

I can do it manually like this, but since the size of the webservice return array varies, it doesn't make sense to do it this way(see below):

- (NSArray *)todaysEvents {
    RandomEvent *event1 = [RandomEvent new];
    [event1 setName:eventName[0]];
    [event1 setAddress:eventAddress[0]];
    [event1 setCity:eventCity[0]];

    RandomEvent *event2 = [RandomEvent new];
    [event2 setName:eventName[1]];
    [event2 setAddress:eventAddress[1]];
    [event2 setCity:eventCity[1]];

    RandomEvent *event3 = [RandomEvent new];
    [event3 setName:eventName[2]];
    [event3 setAddress:eventAddress[2]];
    [event3 setCity:eventCity[2]];

    return @[event1, event2, event3];
}

I know that I will have to iterate over the webservice array, but that's as far as I can get. What is the best way to assign the array values to my custom class? Any guidance will be greatly appreciated.


Solution

  • For you code:

    - (NSArray *)todaysEvents {
        NSMutableArray *resultArray = [NSMutableArray new];
        for (int i = 0; i<eventName.count; i++) {
            RandomEvent *event = [RandomEvent new];
            [event setName:eventName[i]];
            [event setAddress:eventAddress[i]];
            [event setCity:eventCity[i]];
            [resultArray addObject:event];
        }
        return [NSArray arrayWithArray:resultArray];
    }
    

    But as I understand, you are trying to parse received JSON into objects manually. It can takes a long time for you. Try to use mapping frameworks like this one https://github.com/EasyMapping/EasyMapping .