我有一个名为Item的CoreData模型(托管对象):
@interface Item : NSManagedObject {
NSString * type;
}
@property (retain) NSString * type;
@end
Run Code Online (Sandbox Code Playgroud)
我还有两个Item的子类:
@interface Circle : Item
@end
@interface Square : Item
@end
Run Code Online (Sandbox Code Playgroud)
我通过type属性跟踪项目的子类.
当我获取我的时候Items,我会找回一系列项目.但我希望能够根据他们的动态对项目进行动态类型转换type.
CoreData本机支持吗?如果没有,有没有办法动态地对每个进行类型化Item?
我可以得到我想要的类,Item如:
Item * item = ...;
id klass = NSClassFromString(item.type);
Run Code Online (Sandbox Code Playgroud)
我只是不知道我怎么能投item出类型klass.
我有一个db.Model,它有一个db.UserProperty.例如:
class Photo( db.Model ):
owner = db.UserProperty()
title = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)
当我想为用户获取所有照片时,我这样做:
photos = Photo.gql( "WHERE owner = USER(:1)", users.get_current_user().nickname() )
Run Code Online (Sandbox Code Playgroud)
然而,这会导致Google和非Google昵称之间出现问题.在本地测试时,如果我使用电子邮件地址test@example.com,则昵称为"test@example.com".如果我使用test@gmail.com,则昵称为"test".当我使用Gmail帐户进行测试时,我必须将"@ gmail.com"附加到.nickname().
有没有更好的方法来做到这一点,而不是硬编码+"@ gmail.com"到我的所有数据库查询?