2016-05-12 31 views
3

だけのユニークな属性を持つエンティティをフェッチ:コアデータは、私は次の属性を持つエンティティの "人" を持っている

-name
-surname
-age

は、私は、オブジェクトの番号を作成しました(Ben、     ブラック、     18)
(John、   スミス、        19)
(イヴァン、      Borzov、      18)
(デン、     バラン、          20)
(ケント、    Broman、     20)

ユニークな年齢のテーブルを作成するための他の方法[18,19,20]

回答を迅速に入力してください。

P.S.もちろん、すべてのオブジェクトを取得して、手動でユニークを検索することもできますが、より良い解決策を望みます)

ありがとう!

答えて

3

NSFetchRequestのプロパティは、すべてのエンティティで年齢の異なる結果を得るために、propertiesToFetchreturnsDistinctResultsの両方のプロパティを使用できます。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSFetchRequest_Class/#//apple_ref/occ/instp/NSFetchRequest/propertiesToFetch

let fetchRequest = NSFetchRequest(entityName: "Person") 
    fetchRequest.resultType = .DictionaryResultType 
    fetchRequest.propertiesToFetch = ["age"] 
    fetchRequest.returnsDistinctResults = true 
    let result = try! managedObjectContext.executeFetchRequest(fetchRequest) 
+0

あなたは私のデータに基づいて例を提供することがとても親切でしょうか? –

+0

ありがとうございました! –

+0

ようこそ。 –

0

あなたはコードの下のような年齢を取得することができ、私の最後で、やったロードビューで

var getAllLogObj = [NSManagedObject]() 
var allLogsArray : NSMutableArray = NSMutableArray() 

func getAllLogs() 
{ 
    let appDelegate = 
    UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    let fetchRequest = NSFetchRequest(entityName:"Person") 

    var fetchedResults = [NSManagedObject]() 

    let _ : NSError! = nil 
    do { 
     fetchedResults = try managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject] 
     getAllLogObj = fetchedResults 

    } catch { 
     print("Fetching error : \(error)") 
    } 

    if(getAllLogObj.count > 0) 
    { 
     self.allLogsArray.removeAllObjects() 
     self.allLogsArray = NSMutableArray() 

     for(var i : Int = 0; i < getAllLogObj.count; i++) 
     { 
      let ageString = getAllLogObj[i].valueForKey("age") as? NSString 
      self.allLogsArray.addObject(ageString) 
     } 

    } 
    self.tblComplaintList.reloadData() 
} 

その作業罰金をこれを呼び出します。これがあなたにも役立つことを願っています。

+0

これはまさに「手動検索」されます –

0

あなたの答えをありがとう、これは、私はそれが少しでも簡単に「手動検索」と呼ぶまさにです:

let fetchRequest = NSFetchRequest(entityName: "Person") 
do { 
    let results = try managedContext.executeFetchRequest(fetchRequest) 
    persons = results as! [Person] 
} catch let error as NSError { 
    print("Could not fetch \(error), \(error.userInfo)") 
} 

var temporaryArray = [String]() 
for person in persons { 
    if let age = person.age { 
    temporaryArray.append(age) 
    } 
} 
ages = Array(Set(temporaryArray)) 
+0

これはあなたがする必要があるように単純でなければなりません..! –

+0

は、定義した定義変数からすべてを共有します。 –

関連する問題