Jak mogę to zrobić programowo?Konwertuj NSMutableArray na NSSet z tą samą kolejnością
Powiedziano mi, że jest to sposób, aby to zrobić, ale NSSet
ma inną kolejność.
NSSet *set = [NSSet setWithArray:theArray];
Masz pomysł?
Z góry dziękuję.
Jak mogę to zrobić programowo?Konwertuj NSMutableArray na NSSet z tą samą kolejnością
Powiedziano mi, że jest to sposób, aby to zrobić, ale NSSet
ma inną kolejność.
NSSet *set = [NSSet setWithArray:theArray];
Masz pomysł?
Z góry dziękuję.
Jeśli chcesz zamówić, musisz użyć zestawu NSOrderedSet.
NSOrderedSet *set = [NSOrderedSet orderedSetWithArray:theArray];
być również pewien, że to jest naprawdę to, co chcesz. NSOrderedSet jest używany przede wszystkim z CoreData i chociaż może być używany gdzie indziej, zwykle NSArray będzie działał dobrze dla ciebie. http://nshipster.com/nsorderedset/ –
Tak, głównym powodem użycia uporządkowanego zestawu byłoby to, że wpisy byłyby unikalne (duplikaty usunięte), ale zachowałbyś kolejność pozostałych elementów. – rdelmar
Jeśli zależy Ci na zamówieniu, prawdopodobnie nie chcesz używać NSSet.
Jest to rozwiązanie dla Swift 3:
let mutableArray : NSMutableArray!
// Use type NSObject or any custom type
let set = NSSet(array: mutableArray as NSArray as! [NSObject])
Czy możesz wyjaśnić, w jaki sposób ma to pomóc w zapełnieniu NSSet uporządkowaną strukturą elementów? –
W moim przypadku, kolejność w NSMutableArray jest zachowywana po konwersji na NSSet –
Ale dokładnie chcę po prostu zrozumieć mechanizm za tym. Ponieważ jest to nietypowe dla gwarancji porządku, gdy wypełniamy zawartość NSSet w postaci NSArray. A więc zapełnianie od NSMutableArray różni się od zapełniania NSSet i czy to właśnie dlatego? –
można użyć NSSet gdy kolejność nie ma znaczenia ... – rocky