2017-05-08 18 views
0

を返し、私はこの2つの関数フェッチデータが一つの値だけに

//function for updating the group list groupIds 
func updateFriendGroupList(friendId: String, groupIds: [String]) { 

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

    let friendGroups = FriendGroups(context: context) 

    for i in 0..<groupIds.count { 
     friendGroups.friendId = friendId 
     friendGroups.groupId = groupIds[i] 
    } 

    (UIApplication.shared.delegate as! AppDelegate).saveContext() 
} 


//function for fetching group list groupIds 
func fetchFriendGroupList(friendId: String) -> ([String]) { 
    var groupIds = [String]() 

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

    self.fetchFriendGroupListEntity.removeAll() 

    do { 
     self.fetchFriendGroupListEntity = try context.fetch(FriendGroups.fetchRequest()) 
    } catch { 
     print("Fetching Failed") 
    } 

    for i in 0..<self.fetchFriendGroupListEntity.count { 
     if self.fetchFriendGroupListEntity[i].friendId == friendId { 
      groupIds.append(self.fetchFriendGroupListEntity[i].groupId!) 
     } 
    } 
    //returns an array containing groupIds 
    return groupIds 
} 

を持っている私はupdateFriendGroupListに保存されているgroupIdsの数をチェックしています。しかし、私の検索機能では、カウントは常に1になります。

複数のgroupIdを保存していますが、取得するたびに1つだけgroupIdを取得します。私は何を取りこぼしたか?

答えて

1

この場合、NSManagedObjectのインスタンスは1つだけ作成し、同じオブジェクトに対して異なる値を設定します。あなたの問題を解決するには、最初の方法を変更する必要があります

func updateFriendGroupList(friendId: String, groupIds: [String]) { 

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 


for i in 0..<groupIds.count { 
    let friendGroups = FriendGroups(context: context) //here 
    friendGroups.friendId = friendId 
    friendGroups.groupId = groupIds[i] 
} 

(UIApplication.shared.delegate as! AppDelegate).saveContext() 
} 
+0

わかりました。 そのNSManagedObjectインスタンスはトリッキーでした。 –

関連する問題