UCU110
UCU110

Reputation: 413

how to add object to NSMutableArray

I am trying to read an input file (if it exists) and then want to add a string to that input. My code looks as follows.

NSMutableArray *listData = [[NSMutableArray alloc] initWithContentsOfFile:*filepath*];
// listData = null if the input file does not exist.
NSString *jobName = [NSString stringWithFormat:@"My New Job"];
[listData addObject:jobName];

if the input exists then after addObject:jobName, the listData is updated but if the input file does not exist the listData still gives null after addObject:jobName. My input file (if exists) looks something like.

<array>
      <string>My Job 1</string>
      <string>My Job 2</string>
      <string>My Job 3</string>
</array>

I want to add the string in the existing array of strings or want to create a new array of string jobName if it is not already there. Can somebody help me out. Which method I should use to create a new array of string when the input file does not exist.

Upvotes: 17

Views: 53689

Answers (3)

Sangram Shivankar
Sangram Shivankar

Reputation: 3573

You Can Add Object in NSMutableArray using two methods

  1. addObject
  2. insertObject:atIndex

1.using addObject

[myMutableArray addObject:myObject];

2.using inserObject:atIndex

[myMutableArray insertObject:myObject atIndex:index];

Note: Index value must be valid(Within Range)

Upvotes: 5

Dave DeLong
Dave DeLong

Reputation: 243156

From the documentation:

- (id)initWithContentsOfFile:(NSString *)aPath

An array initialized to contain the contents of the file specified by aPath or nil if the file can’t be opened or the contents of the file can’t be parsed into an array. The returned object might be different than the original receiver.

So if the file doesn't exist, you'll have to create the array manually using:

listData = [[NSMutableArray alloc] init];

Upvotes: 5

Georg Fritzsche
Georg Fritzsche

Reputation: 99122

One of some possibilities:

if (!listData) listData = [[NSMutableArray alloc] init];
[listData addObject:jobName];

Upvotes: 36

Related Questions