Reputation: 567
In my application I have an NSArray which contains some data. I want to take that data and put it into an NSMutableArray
called subArrayData
. I am able to insert the data from my first array into the mutable array, but when the application runs I am getting:
warning:Incompatible pointer types assigning to 'nsmutablearray *' from 'nsarray *' please help out.
following is my code: .h file
#import <UIKit/UIKit.h>
@interface AddNew : UIViewController
{
NSMutableArray *subArrayData;;
}
@property(nonatomic ,retain)NSMutableArray *subArrayData;
.m file
#import "AddNew.h"
#import "DashBoardPage.h"
#import "SubmitYourListing.h"
@implementation AddNew
@synthesize subArrayData;
-(void)accommodationAndTravel
{
subArrayData =[[NSArray alloc] initWithArray:[NSArray arrayWithObjects:@"Select one",@"Accommodation and travel hospitality",@"Apartments and villas",@"Bed and Breakfast",@"Caravan parks and campsites",@"Hospitality",
@"Hotels and Motels",@"Snow and Ski lodges",@"Tourist attractions and tourism information",@"Tours and Holidays",@"Travel agents and Services",nil]];
}
Upvotes: 14
Views: 20855
Reputation: 353
You can convert any NSArray to an NSMutable array by calling its -mutableCopy method:
NSArray *someArray = ...;
NSMutableArray* subArrayData = [someArray mutableCopy];
Upvotes: 25
Reputation: 11026
change the .m file
#import "AddNew.h"
#import "DashBoardPage.h"
#import "SubmitYourListing.h"
@implementation AddNew
@synthesize subArrayData;
-(void)accommodationAndTravel
{
subArrayData =[[NSMutableArray alloc] initWithArray:[NSArray arrayWithObjects:@"Select one",@"Accommodation and travel hospitality",@"Apartments and villas",@"Bed and Breakfast",@"Caravan parks and campsites",@"Hospitality",
@"Hotels and Motels",@"Snow and Ski lodges",@"Tourist attractions and tourism information",@"Tours and Holidays",@"Travel agents and Services",nil]];
}
Upvotes: 23
Reputation: 104698
Just call one of NSMutableArray
's initializers, like so:
subArrayData = [[NSMutableArray alloc] initWithObjects:
@"Select one",
@"Accommodation and travel hospitality",
@"Apartments and villas",
@"Bed and Breakfast",
@"Caravan parks and campsites",
@"Hospitality",
@"Hotels and Motels",
@"Snow and Ski lodges",
@"Tourist attractions and tourism information",
@"Tours and Holidays",
@"Travel agents and Services",
nil]];
For the cases when you are dealing with an existing NSArray
, you can make a mutableCopy
:
- (id)initWithArray:(NSArray *)array
{
self = [super init];
if (nil != self) {
subArrayData = [array mutableCopy];
...
Upvotes: 9