Ios 重复数数组

Ios 重复数数组,ios,objective-c,arrays,nsarray,Ios,Objective C,Arrays,Nsarray,我在创建一个程序时遇到了问题,该程序在数组中接收数字并通过字符串返回它们。在我的 main.m文件: #import <Foundation/Foundation.h> #import "NumberRepeater.h" int main(int argc, const char * argv[]) { @autoreleasepool { NumberRepeater *repeater1 = [[NumberRepeater alloc]

我在创建一个程序时遇到了问题,该程序在数组中接收数字并通过字符串返回它们。在我的

main.m文件:

#import <Foundation/Foundation.h>
#import "NumberRepeater.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NumberRepeater *repeater1 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @10]]];

        [repeater1 initWithNumbers:@[@[@1, @10]]];
        NSLog(@"%@", [repeater1 process]);

        NumberRepeater *repeater2 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @2], @[@2, @3]]];

        NSLog(@"%@", [repeater2 process]);

        NumberRepeater *repeater3 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@10, @4], @[@34, @6], @[@92, @2]]];

        NSLog(@"%@", [repeater3 process]);
    }
    return 0;
}

这决不是我需要解决的学校作业。我希望有一个解决方案,但这方面的指导将是伟大的。我觉得我几乎做到了,因为我已经做了类似的问题,并且得到了我需要的输出,但很明显我错过了,我只是不知道是什么。我知道我的过程方法缺少代码,只是我不知道应该在其中放什么。任何帮助都将不胜感激

我没有正确理解您的问题,但我认为您需要一个函数,该函数接受一个数字数组,并返回一个由所有数字组合而成的字符串。如果这是您想要的,您可以创建这样一个函数:-

-(NSString *)getStringFromArray:(NSArray <NSNumber *> *)array{
    NSString *numberString = @"";
    for (NSNumber *no in array) {
        numberString = [numberString stringByAppendingString:no.stringValue];
    }
    return numberString;
}
输出

Number String 1234

•我需要根据您的问题为您解释数组语法

  • 首先,您可以这样声明数组
    @[@1,@2,…]
    这个
    NSNumber的数组
    对象为
    Int
    Value,因为数组只包含id对象,所以我们不能直接使用Int,但我们使用NSnumber,就像@1一样

  • 数组中的对象可以是数组本身,所以我们可以声明数组对象的数组 就像这个例子
    @[@10,4],@[@3,6],@[@2,9]]
    这个数组
    @[@[]、@[]、……等]

  • •根据您的问题,我给您提供了两项
    NSArray
    只要给我一个字符串,第一项重复(第二项)几次

    解决方案

    数字重复器

    #import <Foundation/Foundation.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface NumberRepeater : NSObject {
          NSArray * numbers; // private number array will be initialized during initialization of object
    }
    - (instancetype)initWithNumbers:(NSArray *)numbers;
    
    - (NSString *)process;
    @end
    
    NS_ASSUME_NONNULL_END
    
    #导入
    NS\u假设\u非空\u开始
    @接口编号重复:NSObject{
    NSArray*numbers;//私有数字数组将在对象初始化期间初始化
    }
    -(instancetype)initWithNumber:(NSArray*)编号;
    -(NSString*)过程;
    @结束
    NS\u假设\u非空\u结束
    
    数字重复器

    #import "NumberRepeater.h"
    #import <Foundation/Foundation.h>
    
    
    // NumberRepeater Extention for set private numbers
    @interface NumberRepeater ()
    @property (nonatomic,retain) NSArray *numbers;
    @end
    
    
    @implementation NumberRepeater
    @synthesize numbers;
    
    - (instancetype)initWithNumbers:(NSArray *)numbers {
    
        self = [super init];
        if (self) {
            self.numbers = numbers;
        }
        return self;
    }
    
    - (NSString *)process {
    
    // if numbers have No Data
       if (numbers.count == 0) { return  @"0"; }
    
        // Array of array  each array have two element first is number to repeat and second have number of repetation
        // Example @[@1, @2]   repeat number(1)   TWO times  so out put should be 11
     //   @[@[@1, @2], @[@2, @3]]
    
        NSMutableString * output = [NSMutableString new];
    
        for (NSArray*item in numbers) {
    
            // Array should be with this Format
              // Example @[@1, @2]   repeat number(1)   TWO times
    
                  // assert item have tow items only  like that @[@1,@2]
               NSAssert(item.count == 2,@"Array Should have Two items only");
    
            NSNumber *numberToRepeat = item[0]; // repeat
            NSNumber *repetitionCount = item[1]; //repetition Count
    
            NSMutableString * repeatdString = [NSMutableString new];
    
            for (NSInteger i= 0; i < [repetitionCount integerValue] ; i++) {
                [repeatdString appendString:[numberToRepeat stringValue]];
            }
    
            [output appendString:repeatdString];
            [output appendFormat:@" "]; // space on join with muti array
    
        }
    
    
        return output;
    }
    @end
    
    #导入“NumberRepeater.h”
    #进口
    //设置专用号码的号码重复扩展
    @接口编号重复器()
    @属性(非原子,保留)NSArray*编号;
    @结束
    @实现编号重复器
    @综合数字;
    -(instancetype)initWithNumber:(NSArray*)编号{
    self=[super init];
    如果(自我){
    self.number=数字;
    }
    回归自我;
    }
    -(NSString*)进程{
    //如果数字没有数据
    如果(numbers.count==0){return@“0”;}
    //数组的数组每个数组有两个元素,第一个是重复数,第二个是重复数
    //例@[@1,@2]重复数字(1)两次,因此输出值应为11
    //   @[@[@1, @2], @[@2, @3]]
    NSMutableString*输出=[NSMutableString new];
    用于(NSArray*项目编号){
    //数组应使用此格式
    //示例@[@1,@2]重复数字(1)两次
    //断言项只有两个这样的项@[@1,@2]
    NSAssert(item.count==2,@“数组应仅包含两项”);
    NSNumber*numberToRepeat=项[0];//重复
    NSNumber*repetitionCount=项目[1];//重复计数
    NSMutableString*repeatdString=[NSMutableString new];
    对于(NSInteger i=0;i<[repetitionCount integerValue];i++){
    [RepeatString appendString:[numberToRepeat stringValue]];
    }
    [output appendString:RepeatedString];
    [output appendFormat:@”“];//与多数组连接时的空格
    }
    返回输出;
    }
    @结束
    
    main.m

    #import <Foundation/Foundation.h>
    #import "NumberRepeater.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            NumberRepeater *repeater1 = [[NumberRepeater alloc] 
            initWithNumbers: @[@[@1, @10]]];
    
            NSLog(@"%@", [repeater1 process]);
    
            NumberRepeater *repeater2 = [[NumberRepeater alloc] 
            initWithNumbers: @[@[@1, @2], @[@2, @3]]];
    
            NSLog(@"%@", [repeater2 process]);
    
            NumberRepeater *repeater3 = [[NumberRepeater alloc] 
            initWithNumbers: @[@[@10, @4], @[@34, @6], @[@92, @2]]];
    
            NSLog(@"%@", [repeater3 process]);
        }
        return 0;
    }
    
    #导入
    #导入“NumberRepeater.h”
    int main(int argc,const char*argv[]{
    @自动释放池{
    NumberRepeater*repeater1=[[NumberRepeater alloc]
    initWithNumber:@[@[@1,@10]];
    NSLog(@“%@,[repeater1进程]);
    NumberRepeater*repeater2=[[NumberRepeater alloc]
    initWithNumber:@[@1,2],@[@2,3]];
    NSLog(@“%@,[repeater2进程]);
    NumberRepeater*repeater3=[[NumberRepeater alloc]
    initWithNumbers:@[@10,4]、@[@34,6]、@[@92,2]];
    NSLog(@“%@,[repeater3进程]);
    }
    返回0;
    }
    
    我的预期输出应该是:111111111111111222101010104343434349292谢谢您的回复。那么main.m文件应该包含什么呢?只包含您的question@OmieiOS检查上面
    Number String 1234
    
       Example :
    
            Input @[@1,@2]      repeat number#1  two times
            Output should be 11
    
            Input @[@1,@10]      repeat number#1  10 times
            Output should be 1111111111
    
           Input @[@[@1,@3],@[@3,@4]]      repeat number#1  3 times , number#3   4 time
            Output should be 111 3333
    
    #import <Foundation/Foundation.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface NumberRepeater : NSObject {
          NSArray * numbers; // private number array will be initialized during initialization of object
    }
    - (instancetype)initWithNumbers:(NSArray *)numbers;
    
    - (NSString *)process;
    @end
    
    NS_ASSUME_NONNULL_END
    
    #import "NumberRepeater.h"
    #import <Foundation/Foundation.h>
    
    
    // NumberRepeater Extention for set private numbers
    @interface NumberRepeater ()
    @property (nonatomic,retain) NSArray *numbers;
    @end
    
    
    @implementation NumberRepeater
    @synthesize numbers;
    
    - (instancetype)initWithNumbers:(NSArray *)numbers {
    
        self = [super init];
        if (self) {
            self.numbers = numbers;
        }
        return self;
    }
    
    - (NSString *)process {
    
    // if numbers have No Data
       if (numbers.count == 0) { return  @"0"; }
    
        // Array of array  each array have two element first is number to repeat and second have number of repetation
        // Example @[@1, @2]   repeat number(1)   TWO times  so out put should be 11
     //   @[@[@1, @2], @[@2, @3]]
    
        NSMutableString * output = [NSMutableString new];
    
        for (NSArray*item in numbers) {
    
            // Array should be with this Format
              // Example @[@1, @2]   repeat number(1)   TWO times
    
                  // assert item have tow items only  like that @[@1,@2]
               NSAssert(item.count == 2,@"Array Should have Two items only");
    
            NSNumber *numberToRepeat = item[0]; // repeat
            NSNumber *repetitionCount = item[1]; //repetition Count
    
            NSMutableString * repeatdString = [NSMutableString new];
    
            for (NSInteger i= 0; i < [repetitionCount integerValue] ; i++) {
                [repeatdString appendString:[numberToRepeat stringValue]];
            }
    
            [output appendString:repeatdString];
            [output appendFormat:@" "]; // space on join with muti array
    
        }
    
    
        return output;
    }
    @end
    
    #import <Foundation/Foundation.h>
    #import "NumberRepeater.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            NumberRepeater *repeater1 = [[NumberRepeater alloc] 
            initWithNumbers: @[@[@1, @10]]];
    
            NSLog(@"%@", [repeater1 process]);
    
            NumberRepeater *repeater2 = [[NumberRepeater alloc] 
            initWithNumbers: @[@[@1, @2], @[@2, @3]]];
    
            NSLog(@"%@", [repeater2 process]);
    
            NumberRepeater *repeater3 = [[NumberRepeater alloc] 
            initWithNumbers: @[@[@10, @4], @[@34, @6], @[@92, @2]]];
    
            NSLog(@"%@", [repeater3 process]);
        }
        return 0;
    }