在使用rest JSON-API时,在整个应用程序中保持属性使用的一致性很方便,并且在此示例中调用服务器时也是如此:
class Picture: NSManagedObject {
@NSManaged var copyright: String
@NSManaged var likes: NSNumber
}
func postToServer() {
let newPicture = Picture(copyright: "haaakon", likes:433)
let arguments = @{
newPicture.copyright.selectorName : newPicture.copyright,
newPicture.likes.selectorName : newPicture.likes
}
println(arguments)
}println应给出以下输出:
{ "copyright": "haaakon", "likes": "433" }在给定属性上创建扩展(或其他解决方案)时,返回的基本相同于:
NSStringFromSelector(Selector(newPicture.copyright)) // returns "copyright"
newPicture.copyright.selectorName // returns "copyright"发布于 2014-10-21 17:06:15
试试这个:
extension Picture{
func dictionary() -> Dictionary<String, AnyObject> {
var outCount: CUnsignedInt = 0
let properties: UnsafeMutablePointer<objc_property_t> = class_copyPropertyList(self.dynamicType, &outCount)
var result: Dictionary<String, AnyObject> = Dictionary()
for var i = 0; i < Int(outCount); i++ {
var property : NSString! = NSString(CString: property_getName(properties[i]), encoding: NSUTF8StringEncoding)
result[property] = self.valueForKey(property)
}
return result
}
}https://stackoverflow.com/questions/26481292
复制相似问题