2016-07-08 4 views
1

Я хочу, чтобы добавить значение в пустой массив с помощью цикла значения другого массиваВставка пустого массива с петлей

var Person : [String:String] 

var data : [String:String] = [ 
    "name" : "John", 
    "age" : "22" 
] 

for (index, value) in data { 
    Person[index] = value 
} 

И я получил эту ошибку «переменная Person передается по ссылке, прежде чем инициализации»

Почему что?

+0

Почему этот вопрос отмечен obj-c и obj-C++? – Eiko

+0

в быстрой вы инициализируете свои переменные или отмечаете их как необязательные –

+0

@angger вы попробовали мои ан? – Vvk

ответ

2

изменение:

var Person : [String:String] 

к:

var Person = [String:String]() 

инициализацию массива перед его использованием.

3

Try This

// Array initialization 
    var Person = [String:String]() 

    var data : [String:String] = [ 
     "name" : "John", 
     "age" : "22" 
    ] 

    for (index, value) in data { 
     Person[index] = value 
    } 

Надеется, что это помогает.

+0

Спасибо! Я думаю, что я безрассудно там – Angger

+0

@ Ангел приветствуется. Существует много способов инициализации массива, но это просто. – Vvk

1

В Objective C

#import "ViewController.h" 

@interface ViewController() 
{ 
    NSMutableArray *arr,*arrSecond; 
} 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
    //First Array 
    arr = [[NSMutableArray alloc]initWithObjects:@"iOS",@"Android",@"Windows",@"Blackberry",@"Symbion",@"Bada",nil]; 
    arrSecond = [[NSMutableArray alloc]init]; 
    for(int i=0;i<[arr count];i++) 
    { 
    //Second Array inside the for loop.It is getting objects from First loop of for 
    [arrSecond addObject:[NSString stringWithFormat:@"%@",[arr objectAtIndex:i]]]; 
    } 
} 
1

Что вы объявляете здесь является словарь, а не массив. Тот же самый результат, который достигается с помощью приведенной выше коды (в ответе от ВОК) может быть достигнут путем простого написания:

var Person = [ "name" : "John", "age" : "22" ] 

Если вы хотите использовать цикл для добавления элементов в словарь, то вы могли бы, но Я не вижу значения этого в этом контексте.

Если цель состоит в том, чтобы установить значение в Person равных значений в data, то вы можете просто написать:

var Person = [String:String]() 

var data = [ "name" : "John", "age" : "22" ] 

Person = data 

Нет необходимости для цикла, если более широкий круг вашего проекта не требует.

Смежные вопросы