2016-04-05 23 views
0
func fetchCD() -> [Entity] { 

    var options : [Entity] = [] 
    let fetchRequest = NSFetchRequest(entityName:"EntityName") 

    do { 
    options = try cdh.managedObjectContext.executeFetchRequest(fetchRequest) as! [Entity] 
    } catch let error as NSError { 
    print("Fetch failed: \(error.localizedDescription)") 
    } catch { 

    } 

    //here I'd like to order by Entity.types.counter (desc) 

    return options 
} 

//Entity+CoreDataProperties.swift 
extension Entity { 
    //my values 
    @NSManaged var types: NSSet? 
} 


//Type+CoreDataProperties.swift 

extension Type { 

@NSManaged var counter: NSNumber 

} 

[Varlık] dizilim türünü bir varlık olan (örneğin, Varlık ile pek çok ilişkisi olan) bir türe göre sıralama yaparak nasıl sıralayabilirim?çok sayıda ilişkiye sahip varlıkların hızlı sıralama dizisi

cevap

0

Erişilebilir bir değeri varsa, diziyi sıralamak için sortInPlace'u kullanabilirsiniz.

Sadece değere nasıl erişileceğini ve nasıl karşılaştırılacağını belirtmelisiniz, sanırım buna benzer şekilde çağrı yapabilirsiniz, size yardımcı olup olmadığını kontrol edin.

options.sortInPlace({ $0.types.counter < $1.types.counter }) 
+0

Teşekkürler, alıyorum: 'NSSet türü değeri? üye 'sayacı' yoktur –

+0

Sayacın değerine nasıl erişirsiniz? sadece blokta değiştirmek ve işe yarayacak – UlyssesR

0

Kısa cevap yapamazsınız çünkü bu hiçbir anlam ifade etmemektedir. Tek bir nesneyi birçok nesneye göre sıralamak istiyorsunuz.

ürününü en yüksek Type veya en büyük Type ürününe göre sıralamak istiyorsanız, bu farklı bir soru ve çözülebilir bir sorun olacaktır. Sıralamak için "değer" sorusuna tutarlı bir cevap gerektirir. Çok sayıda Type nesnesi incelendiğinde EntityName hangi değere göre sıralanmalıdır?

Type nesnelerinin miktarına dayanmalıdır? Bu sıralanabilir.

Type nesnelerinin varlığına dayanmalıdır? Bu da sıralanabilir.

Ayrıca o arkanı dön ve Type varlık tüm nesneleri getirme, sıralamak onları counter dayanan ve ardından sıralama tamamlandıktan sonra Type varlıkla ilişkili EntityName nesneyi almak olabilir. Ardından kod aşağıdaki gibi görünecektir: Ben projenize erişimi yoktur ve böyle benim varlıkları isimlerini vermedi olarak

func fetchCD() -> [Entity] { 

    let fetchRequest = NSFetchRequest(entityName:"Type") 
    fetchRequest.sortDescriptors = [NSSortDescriptor("counter", ascending: true)] 

    do { 
    let results = try cdh.managedObjectContext.executeFetchRequest(fetchRequest) as! [Type] 
    let options = results.map($0.entity) as! [Entity] 
    //Type is already sorted 
    return options 
    } catch { 
    fatalError("Fetch failed: \(error)") 
    } 
} 

Bu kod DEĞİL% 100 olduğunu. Ancak gösteri amaçlı olarak size bir seçenek gösterir.

İlgili konular