相关疑难解决方法(0)

CoreData Swift和瞬态属性getter

在Swift中使用Core Data时有关实现计算属性的任何建议吗?

使用生成的ManagedObject类,我试图覆盖getter但是我收到错误:

'NSManaged'不允许使用计算属性

这意味着你不能覆盖瞬态(计算)属性的getter.

在下面的代码示例中,dateDue在我的模型中定义为瞬态属性.

请注意,@ NSManaged行是由Xcode生成的 - 不是由我添加的.

@NSManaged var timeStamp: NSDate
@NSManaged var dateDue: String { 
    get {

        self.willAccessValueForKey("dateDue")
        var ddtmp  = self.primitiveValueForKey("dateDue") as String?
        self.didAccessValueForKey("dateDue")

        if (ddtmp == nil)
        {

            let calendar = NSCalendar.currentCalendar()

            let components = calendar.components((NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.MonthCalendarUnit ) , fromDate: self.timeStamp)
            ddtmp = "\(components.year * 1000 + components.month)"
            self.setPrimitiveValue(ddtmp, forKey: "dateDue")

        }



        return ddtmp!
    }

}
Run Code Online (Sandbox Code Playgroud)

core-data swift

24
推荐指数
3
解决办法
1万
查看次数

NSFetchedResultsController的瞬态属性的NSSortDescriptor

好吧,我最初想要根据我的子类中的属性进行排序NSSortDescriptor请求,但显然不会这样做,因为NSFetchedResultsController仅限于对获取的实体及其关系起作用的谓词和排序描述符,所以我决定在我的数据模型中创建一个transient属性,在我的子类中将此属性的属性合成为ivar ,并基于它进行排序.NSFetchedResultsControllerNSManagedObjectNSManagedObject

运行时,我在执行fetch时得到了 'NSInvalidArgumentException', reason: 'keypath isActive not found in entity <NSSQLEntity SMSourceEntity id=2>'

我知道这是KVO问题,所以我补充说+ (NSSet*)keyPathsForValuesAffectingIsActive,但仍然有同样的问题.

我做错了什么,或者我还在遗漏一些东西让它找到我的密钥路径?谢谢.

码:

@implementation SMSourceEntity

@dynamic friendlyName;
@dynamic interfaceAddress;
@dynamic uniqueID;
@dynamic network;
@synthesize isActive = _isActive;

+ (NSSet*)keyPathsForValuesAffectingIsActive
{
    return [NSSet setWithObject:@"isActive"];
}

@end
Run Code Online (Sandbox Code Playgroud)

我的sortDescriptor:

request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"isActive" ascending:NO] , nil];
Run Code Online (Sandbox Code Playgroud)

objective-c key-value-observing transient nssortdescriptor ios

9
推荐指数
1
解决办法
3122
查看次数