gpt4 book ai didi

ios - 尝试将 CMTime 存储为核心数据上的可转换属性

转载 作者:行者123 更新时间:2023-11-29 00:02:14 24 4
gpt4 key购买 nike

我之前使用过 Core Data 的可转换属性,但没有使用过 C 对象,例如 CMTime

我需要使用可转换在核心数据上存储 CMTime

在模型对象上,我已将其声明为可转换的。

@property (nonatomic, retain) id tempo;

我知道 CMTime 是一个 C 对象,我需要将其转换为 NSDictionary 并序列化它,以便我可以存储在 Core Data 上。

NSManagedObject 类上,我有这个...

+(Class)transformedValueClass
{
return [NSData class];
}

+(BOOL) allowsReverseTransformation
{
return YES;
}

-(id)transformedValue:(id) value
{
CFDictionaryRef dictTime = CMTimeCopyAsDictionary(?????, kCFAllocatorDefault);
NSDictionary *dictionaryObject = [NSDictionary dictionaryWithDictionary:(__bridge NSDictionary * _Nonnull)(dictTime)];
return [NSKeyedArchiver archivedDataWithRootObject:dictionaryObject];
}

-(id)reverseTransformedValue:(id)value
{
// not complete ???
return (NSDictionary*) [NSKeyedUnarchiver unarchiveObjectWithData:value];
}

?????? 是我的问题。您会看到,方法 transformedValue:(id)value 接收的值为 id,但我需要一个 CMTime。我不能简单地转换它。

此外,当我创建该实体的实例时,理论上我应该能够分配如下值:

myEntity.tempo = myCmTimeValue;

我不知道如何对 id 执行此操作...

另外,在 reverseTransformedValue: 上,我返回一个 id

我不明白这一点。我希望能够设置和接收 CMTime

最佳答案

CMTime 是一个结构,NSValueTransformer 只能与对象(指针)一起使用。

解决方法是将 CMTime 包装在 NSValue

@property (nonatomic, retain) NSValue *tempo;

并将NSValue转换为CMTime,反之亦然

CMTime time = [self.tempo CMTimeValue];


self.tempo = [NSValue valueWithCMTime:time];

关于ios - 尝试将 CMTime 存储为核心数据上的可转换属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49212403/

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