gpt4 book ai didi

swift - 比较 Fetchrequest Xcode Swift OSX Core Data Predicate 中的 NSSet

转载 作者:行者123 更新时间:2023-11-28 08:31:02 37 4
gpt4 key购买 nike

我有两个 NSManagedObject 就像

class Person: NSManagedObject {

@NSManaged var firstname: String;
@NSManaged var lastname: String;
@NSManaged var code: String;
@NSManaged var position: Int16;
@NSManaged var lasttime: NSDate;
@NSManaged var isvip: Int16;
@NSManaged var changeposition: NSSet;
}


class ChangePosition: NSManagedObject {

@NSManaged var person:Person
@NSManaged var code: String;
@NSManaged var from: Int16;
@NSManaged var to: Int16;
@NSManaged var time: NSDate;
}

所以我有一个人有许多 ChangePosition 作为 NSSet。每个 ChangePosition 都有一个 NSDate

现在我想尝试从具有最高 NSDate 的 Person 获取一个 ChangePosition。我可以为此使用哪个谓词结构?

最佳答案

所以我的实际工作流程是这个

let fetchReqPerson = NSFetchRequest(entityName: "Person");
//fetchReq.predicate = NSPredicate(format: "ANY personchangeposition.time == maxElement(personchangeposition.time)")



do {

let fetchResult = try self.appDelegate.managedObjectContext.executeFetchRequest(fetchReqPerson)

for managedObject in fetchResult {

var bigTime:PersonChangePosition?


for changes in (managedObject as! Person).personchangeposition {



if (changes as! PersonChangePosition).time.compare(_date) == NSComparisonResult.OrderedAscending {

if bigTime == nil {
bigTime = changes as! PersonChangePosition
} else {

if (changes as! PersonChangePosition).time.compare(bigTime!.time) == NSComparisonResult.OrderedDescending {
bigTime = changes as! PersonChangePosition;
}

}

}

}

if bigTime != nil {
//print("bigTime: ",bigTime!.time, "to: ",bigTime!.to)

self.fetchResultPerson.append(bigTime!)
}



}


self.fetchForRecord = self.fetchResultPerson;

//print("fetchResult fetchResultPerson: ",fetchResultPerson.count)


} catch let fetchError as NSError {

print("Fetching error: ",fetchError)
}



//

switch(self.areaSegementControl.selectedSegment){


case 0: self.fetchForRecord = try self.fetchForRecord.filter({$0.to != 4})
break;

case 1: self.fetchForRecord = try self.fetchForRecord.filter({$0.to == 1 || $0.to == 3})
break;

case 2: self.fetchForRecord = try self.fetchForRecord.filter({$0.to == 2})
break;

default:
break;

}

当然,它相当慢......不是很好

关于swift - 比较 Fetchrequest Xcode Swift OSX Core Data Predicate 中的 NSSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892366/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com