2015-07-31 2 views
1

Я новичок в программировании, так что это может быть основной вопрос. Я пытаюсь работать с вложенными массивами в Swift.swift не может назначить результат этого выражения

@IBAction func testFuncTrigger(sender: UIButton) { 
    var tempTestArray = []; 
    tempTestArray = [["cos",["x"]],["sin",["cos",["x"]]],"5*x"]; 
    tempTestArray[1] = "8*x"; 
    tempTestArray[1] = ["8*x"]; 
    tempTestArray[1] = ["e^",["sin",["x"]]]; 
} 

дает ошибку «не может назначить результат этого выражения».

также пытается поставить

@IBAction func testFuncTrigger(sender: UIButton) { 
    var tempTestArray = []; 
    tempTestArray = [["cos",["x"]],["sin",["cos",["x"]]],"5*x"]; 
    tempTestArray[1] += "8*x"; 
    tempTestArray[1] += ["8*x"]; 
    tempTestArray[1] += ["e^",["sin",["x"]]]; 
} 

дает ошибки

Binary operator "+=" cannot be applied to operands of type 'AnyObject' and 'String' 

и

Binary operator "+=" cannot be applied to operands of type 'AnyObject' and '[String]' 

и

Binary operator "+=" cannot be applied to operands of type 'AnyObject' and '[NSObject]' 

соответственно.

Есть ли способ обойти это?

ответ

1

Если вы объявляете массив так:

var tempTestArray = [] 

Тип этого массива будет NSArray, потому что вы не определяет тип в массиве. И вы не можете добавить какой-либо элемент в NSArray таким образом.

Дайте тип к вашему tempTestArray к AnyObject, как это:

var tempTestArray = [AnyObject]() 

И это будет работать нормально.

+0

По какой-то причине [] заставляет Swift создавать NSArray, к которому нельзя добавить объекты! Странное поведение, когда он, вероятно, должен просто отказаться от компиляции в ситуации, когда он не может определить тип пустого массива. –

+0

Да, это странное поведение. –

+0

Yup, это работает, спасибо большое. Я просто попробовал функцию .append(), и теперь она работает после указания типа. – Anirudh

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