小编bll*_*akk的帖子

核心数据:setPrimitiveValue:forKey:表现得非常奇怪

这是一个谜:

我调用setPrimitiveValue:forKey:NSManagedObject.关键是对象的合法,持久,建模属性.但是,setPrimitiveValue:forKey:失败,通常为不同的任意属性设置值.文档说在调用setPrimitiveValue:forKey:未建模的密钥时会出现这种行为.所以似乎Core Data认为密钥是未建模的.

奇怪的部分:

当密钥被硬编码为字符串文字时,原始值确实成功设置.它只在键是变量时失败.我正在使用的变量恰好从keyPath参数传递observeValueForKeyPath:ofObject:change:context:

keyPath变量与字符串文字相同.isEqual:返回true并且哈希值相等.的keyPath变量的类型的__NSCFString.有谁知道为什么setPrimitiveValue:forKey:会有不同的表现?(此行为在OS X 10.9.1上)


更新信息更新:

行为不当的密钥追溯到从磁盘上的文件加载的字符串.以下示例是一个孤立的案例.如果将属性字符串"mainAttr"写入磁盘并重新读入,则setPrimitiveValue:forKey:设置错误属性的值,而不是"mainAttr".

核心数据对象:

@interface Boo : NSManagedObject
@property (nonatomic, retain) NSNumber * mainAttr;
@property (nonatomic, retain) NSNumber * attr1;
@property (nonatomic, retain) NSNumber * attr2;
@property (nonatomic, retain) NSNumber * attr3;
@end
Run Code Online (Sandbox Code Playgroud)

-

#import "Boo.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
            NSManagedObjectContext *context = managedObjectContext(); …
Run Code Online (Sandbox Code Playgroud)

core-data key-value-observing ios kvc object-equality

7
推荐指数
1
解决办法
742
查看次数

如何同时播放多个音频文件

如何使用AVAudioPlayer同时播放音频文件的数量?是否可以播放使用AVAudioPlayer同时播放音频文件的数量?或任何其他方式同时播放多个音频文件?谢谢!

multimedia ios

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