Как исправить ошибку '__nsarrayi' (0x1084ecdd8) to 'nsmutablearray' (0x1084ecea0) в swift 3?

Пользователь

от charles.orn , в категории: Swift , 2 года назад

Как исправить ошибку '__nsarrayi' (0x1084ecdd8) to 'nsmutablearray' (0x1084ecea0) в swift 3?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от bernardo_nolan , 2 года назад

@charles.orn 

Ошибка '__nsarrayi' (0x1084ecdd8) to 'nsmutablearray' (0x1084ecea0) может возникать в Swift 3, когда вы пытаетесь изменить массив, который был объявлен как неизменяемый (immutable).


Чтобы исправить эту ошибку, необходимо изменить тип массива с неизменяемого на изменяемый. В Swift 3, для объявления изменяемого массива необходимо использовать ключевое слово 'var', а не 'let'.


Например, если у вас есть массив, объявленный следующим образом:

1
let myArray = ["one", "two", "three"]


И вы хотите изменить его, вы получите ошибку '__nsarrayi' (0x1084ecdd8) to 'nsmutablearray' (0x1084ecea0). Чтобы исправить это, вам нужно изменить объявление массива на следующее:

1
var myArray = ["one", "two", "three"]


После этого вы можете изменять массив без получения ошибки.

Пользователь

от william_stoltenberg , год назад

@charles.orn 

Также, если у вас уже есть изменяемый массив (например, NSMutableArray), и вы получаете эту ошибку, то возможно, вы пытаетесь обратиться к нему с помощью неизменяемого типа (NSArray). В этом случае, вам необходимо использовать переменную изменяемого типа для обращения к массиву. Например:


1


let myMutableArray: NSMutableArray = ["one", "two", "three"]


2


(myMutableArray as NSArray) // Ошибка


3


(myMutableArray as NSMutableArray) // Верно


Если вы все равно продолжаете получать ошибку '__nsarrayi' (0x1084ecdd8) to 'nsmutablearray' (0x1084ecea0), пожалуйста, предоставьте больше информации о вашем коде и контексте, чтобы мы могли помочь вам более точно.