【问题标题】:How to assign NSArray data to NSMutableArray in iphone?如何将 NSArray 数据分配给 iPhone 中的 NSMutableArray?
【发布时间】:2012-04-18 07:04:31
【问题描述】:

在我的应用程序中,我有一个包含一些数据的 NSArray。我想获取这些数据并将其放入名为subArrayDataNSMutableArray 中。我能够将我的第一个数组中的数据插入到可变数组中,但是当应用程序运行时,我得到:

警告:分配给“nsmutablearray *”的指针类型不兼容 来自 'nsarray *' 请帮忙。

以下是我的代码: .h 文件

#import <UIKit/UIKit.h>

@interface AddNew : UIViewController
{
    NSMutableArray *subArrayData;;
}
@property(nonatomic ,retain)NSMutableArray *subArrayData;

.m 文件

#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]];


}

【问题讨论】:

    标签: iphone objective-c ios object xcode4.2


    【解决方案1】:

    您可以通过调用其 -mutableCopy 方法将任何 NSArray 转换为 NSMutable 数组:

    NSArray *someArray = ...;
    NSMutableArray* subArrayData = [someArray mutableCopy];
    

    【讨论】:

      【解决方案2】:

      更改 .m 文件

      #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]];
      
      
      }
      

      【讨论】:

      • 这里面有一个非常奇怪的额外对象——你可以直接在NSMutableArray上调用initWithObjects:,在这里绕过initWithArray:/arrayWithObjects:链。请参阅贾斯汀的回答。
      【解决方案3】:

      只需调用NSMutableArray 的初始化器之一,如下所示:

      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]];
      

      如果您正在处理现有的NSArray,您可以创建一个mutableCopy

      - (id)initWithArray:(NSArray *)array
      {
        self = [super init];
        if (nil != self) {
          subArrayData = [array mutableCopy];
          ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-28
        • 1970-01-01
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多