Cách trả lại NSMutableArray từ NSSet


104

Tôi có thể đặt nội dung của một NSSetthành một NSMutableArraynhư thế này:

NSMutableArray *array = [set allObjects];

Tuy nhiên, trình biên dịch phàn nàn vì [set allObjects] trả về NSArraykhông phải là một NSMutableArray. Điều này nên được sửa chữa như thế nào?

Câu trả lời:


218

-allObjectstrả về một mảng, bạn có thể tạo một phiên bản có thể thay đổi với:

NSMutableArray *array = [NSMutableArray arrayWithArray:[set allObjects]];

Hoặc, cách khác, nếu bạn muốn xử lý quyền sở hữu đối tượng:

NSMutableArray *array = [[set allObjects] mutableCopy];

7
Lưu ý: có một sự khác biệt nhỏ trong hai phương pháp nếu setnil.
Zach Langley

-1

Tôi đã giải quyết sự cố bằng cách sử dụng phương pháp 'addObjectsFromArray' của NSMutableArray để gán tất cả các đối tượng NSSet cho NSMutableArray như:

[mutableArray addObjectsFromArray:[cg_Schedule.schedule_Days allObjects]];

Hy vọng điều này sẽ giúp bạn.


-3

Đối với một bộ có thứ tự sử dụng:

NSArray *myArray = [[myOrderedSet array] mutableCopy];

Dường như không có một - arrayphương thức NSSet .
Sophie Alpert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.