2015-06-12 38 views
1

如何在Swift中实现核心数据验证方法(这些采用Obj-C中的validate<Key>:error:)?在Swift中实现核心数据验证方法

在的OBJ-C,我会写在我的模型类以下验证属性:

-(BOOL)validateName:(id *)name error:(NSError **)outError { 

} 

而且我可以做投名称的NSString:((NSString *)(*name))

在斯威夫特,我认为这看起来像这样:

func validateName(name: AutoreleasingUnsafeMutablePointer<AnyObject?>, error: NSErrorPointer) -> Bool { 
} 

这是正确的形式?

如何将名称转换为Swift的字符串?

+0

的可能的复制[核心数据验证:从目标C到夫特(http://stackoverflow.com/questions/26913310/core-data-validation-从目标c到swift) –

回答

2

有关这方面的文档非常稀少,网络上没有太多关于它的信息。添加这里作为其他人的参考,我可以通过一些挖掘和跟踪和错误找到。

这似乎是工作:

// Validating the 'name' attribute of NSManagedObject's descendant 
func validateName(name: AutoreleasingUnsafeMutablePointer<AnyObject?>, error: NSErrorPointer) -> Bool { 

    if let name = name.memory as? String { 
     // do validation here when name is not nil 
    } else { 
     // when name is nil 
     return false 
    } 
} 
+1

如何调用'validateName()'?我似乎无法强制字符串键入'AutoreleasingUnsafeMutablePointer '。 –