【问题标题】:Objective C - Return 2D string arrayObjective C - 返回二维字符串数组
【发布时间】:2013-11-01 12:11:44
【问题描述】:

我正在制作一个应该返回二维单词数组的函数。一次是英语,一次是斯洛伐克语。这些单词存储在 TXT 文件中。我正在理解 txt 并且它正在工作,但是编译器似乎在返回 NSString 2d 数组时遇到了问题。可以看看吗?

这是最后的函数,但有一行给出错误: 从结果类型为“NSString”的函数返回“NSString *__strong[[array count]][2]”的不兼容指针类型

- (NSString*) getWordArray
{
    NSArray *array = [self getTxtArray];
    NSString *str[[array count]] [2];
    for(int i = 0; i < [array count]; i++)
    {
        NSArray *translation = [array[i] componentsSeparatedByString:@" "];
        str[i][0] = [translation objectAtIndex:0];
        str[i][1] = [translation objectAtIndex:1];
    }
    return str;
}

这些功能运行良好。只是为了向您展示,以防您有兴趣,因为它们被用于有问题的地方

- (NSString*) getTxt
{
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"];
    if (filePath)
    {
        NSString *contentOfFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
        return contentOfFile;
    }
    return @"";
}

- (NSArray*) getTxtArray
{
    NSArray* array = [[self getTxt] componentsSeparatedByString:@"\n"];
    return array;
}

【问题讨论】:

    标签: ios objective-c arrays string text


    【解决方案1】:

    您需要将NSMutableArray 用于您的二维字符串数组。您的 getWordArray 方法如下所示:

    - (NSArray *)getWordArray
    {
        NSArray *array = [self getTxtArray];
        NSMutableArray *strArray = [NSMutableArray array]; // This is your 2D array
        for(int i = 0; i < [array count]; i++)
        {
            NSArray *translation = [array[i] componentsSeparatedByString:@" "];
            // translation is assumed to be an array with two elements
            [strArray addObject:translation];
        }
        return strArray;
    }
    

    这是可行的,因为二维数组是一个数组数组,并且由于componentsSeparatedByString: 返回一个数组,我们可以将每个数组填充到一个容器数组中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-16
      • 2016-04-04
      • 2015-09-01
      • 2016-05-02
      • 2011-12-30
      • 2011-11-07
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多