我在Swift中有以下代码:
$inputs = Input::get('pj');
foreach($inputs as $input){
if(DB::table('order_detail')->insert($input)){}
else{
return Redirect::back()
->with('message','something went wrong')
->withInput();
}
}
Redirect::route('admin.order_detail.index')
->with('message','success');
有没有办法让这个更简洁,说我知道我要检查的所有属性,假设我有一个数组= ['property1','property2',..'propertyN']。我是swift的新手,我知道在C#中我会使用反射。
感谢。
答案 0 :(得分:0)
如果obj
继承自NSObject
,您可以执行以下操作:
var value = obj.valueForKey('property1');
可以通过以下方式设置值:
obj.setValueForKey('property1', valueObject);
修改强> 假设你想使用一些讨厌的代码,你可以使用这样的东西:
var obj = NSObject();
var selfObj = NSObject();
let propertyNames = ["property1", "property2"];
var changed = false
for property in propertyNames {
if obj.valueForKey(property) != nil {
let selfValue = selfObj.valueForKey(property) as! NSObject
let objValue = obj.valueForKey(property) as! NSObject
if selfValue != objValue {
selfObj.setValue(objValue, forKey: property)
changed = true
}
}
}
需要更多nil
次检查,但您可以自己做。