【问题标题】:I am having trouble with compatibility between NSArray and NSMutableArray?我遇到了 NSArray 和 NSMutableArray 之间的兼容性问题?
【发布时间】:2011-10-06 09:00:40
【问题描述】:

我遇到了 NSArray 和 NSMutableArray 之间的兼容性问题? --> 分配“struct NSArray *”的不兼容 Objective-C 类型,预期为“struct NSMutableArray”

NSMutableArray *nsmarrRow;

NSString *nsstrFilePath = [[NSBundle mainBundle] pathForResource: nsstrFilename ofType: nsstrExtension];
NSString *nsstrFileContents = [NSString stringWithContentsOfFile: nsstrFilePath encoding:NSUTF8StringEncoding error: NULL];

//break up file into rows
nsmarrRow = [nsstrFileContents componentsSeparatedByString: nsstrRowParse];//<--Incompatible Objective-C types assigning "struct NSArray *", expected "struct NSMutableArray"

我已经尝试将“NSString 声明”改为“NSMutableString”... 产生了更多问题。

谢谢

【问题讨论】:

    标签: objective-c cocoa-touch


    【解决方案1】:

    你不能通过这样做得到一个可变数组

    nsmarrRow = [nsstrFileContents componentsSeparatedByString: nsstrRowParse];
    

    你需要,

    nsmarrRow = [NSMutableArray arrayWithArray:[nsstrFileContents componentsSeparatedByString: nsstrRowParse]];
    

    NSString 更改为NSMutableString 不会给您NSMutableArray 对象。你会得到一个NSArray 对象,就像NSString 一样。您必须使用上述方法获取NSMutableArray

    【讨论】:

      【解决方案2】:

      componentsSeparatedByString 方法返回一个 NSArray。请尝试以下操作:

      [NSMutableArray arrayWithArray:[nsstrFileContents componentsSeparatedByString: nsstrRowParse]];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-25
        • 2016-09-03
        • 1970-01-01
        相关资源
        最近更新 更多