iphone - NSManagedObject-如何获取属性的类型

标签 iphone core-data ios

我正在尝试将json字符串直接解析为托管对象。
json字符串包含所有字符串,但是我的Entity具有Date对象。

如果这是我的json字符串

{
"name":"John",
"dob": "12/12/2008",
etc...
}

这是我的实体人:
name : NSString
dob: Date
etc...

我想通过遍历Json dict的键,并将值设置为我实体的匹配键来直接解析json:
Person *aPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
NSArray *keys = [jsonDict allKeys];

for (NSString *key in keys) {

 [aPerson setValue:[jsonDict valueForKey:key] forKey:key];

}

仅当我所有实体的属性均为NSStrings时,此方法才有效。

如何获取实体属性的类型/类以设置各种类型?

例如。
如果键= @“dob”
如何获取aPerson.dob的类型/类?

所以我的代码看起来像这样:
Person *aPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
NSArray *keys = [jsonDict allKeys];

for (NSString *key in keys) {
    if([[aPerson objectForKey:key] isKindOfClass:[NSDate class]])
    {
       // Create an NSDate object
    }else{
       [aPerson setValue:[jsonDict valueForKey:key] forKey:key];
    }
}

谢谢

更新:

好的,我尝试使用isKindOfClass,结果是:
// for key = @"name" 
// aPerson.name is NSString
[[aPerson valueForKey:key] isKindOfClass:[NSString class]] => TRUE
[[aPerson valueForKey:key] isKindOfClass:[NSObject class]] => TRUE

// for key = @"age"
// aPerson.age is NSNumber
[[aPerson valueForKey:key] isKindOfClass:[NSNumber class]] => TRUE
[[aPerson valueForKey:key] isKindOfClass:[NSObject class]] => TRUE

// for key = @"dob"
// aPerson.dob is NSDate
[[aPerson valueForKey:key] isKindOfClass:[NSDate class]] => FALSE
[[aPerson valueForKey:key] isKindOfClass:[NSObject class]] => FALSE

那个怎么样?
@dynamic dob和NSDate,不是notOfClass NSDate!

请告诉我我想念的东西!

最佳答案

我知道,这是一个较晚的答案,但是正如我今天正在寻找一个好的解决方案...
这是我现在正在使用的:

NSEntityDescription * myEntity = [object entity];
NSDictionary * attributes = [myEntity attributesByName];
if ([[[attributes objectForKey:key] attributeValueClassName] isEqualToString:@"NSDate"]) {
    // this type is NSDate
}                        

希望这可以帮助 :)

关于iphone - NSManagedObject-如何获取属性的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4425079/

相关文章:

iphone - 如果服务器上更新,则通过 FTP 下载到 iphone

ios - Swift 4 MKMapView 像 GoogleMap 一样改变 map 样式

ios - 我想在第一次打开应用程序时创建提醒

iphone - 如何为我的导航 Controller 按钮设置颜色?

iphone - 子类 UIButton 还是继承自 UIControl?

iphone - 如何使用陀螺仪使 "paintball"停留在增强现实应用程序中的位置?

iOS 应用程序 - 复杂的 UI 与复杂的数据分离

ios - 跨设备同步核心数据

ios - 涉及多台设备时CoreData iCloud Migration "looses"数据

ios - 应用内购买中的 SKErrorDomain Code=0