我想在c#中从字符串到枚举之间进行明确的转换,以便得到:
(MyEnum) Enum.Parse(typeof(MyEnum),stringValue)
Run Code Online (Sandbox Code Playgroud)
我想把它驱逐到一个显式的强制转换操作符,我这样做但是没有用:
public static explicit operator (MyEnum)(value stringValue){
return (MyEnum) Enum.Parse(typeof(MyEnum),stringValue);
}
Run Code Online (Sandbox Code Playgroud)
你知道在C#中使用.NET 3.5是否可行?
我喜欢通过传递一个值来创建一个自定义类的实例,该值在初始化时将帮助设置它.我已经覆盖了init并且实际上将其更改为:
- (id)initWithValue:(NSInteger *)initialValue;
Run Code Online (Sandbox Code Playgroud)
我想将此值存储在实例化对象的属性中,并使用该值生成将与其关联的UIImage的文件名.
我的问题是如何在Cocoa/Obj-C中最好地解决这个问题.NSInteger是我需要的最佳参数还是NSString会更好?还是有其他设计模式?我不熟悉在这种情况下可以提供帮助的所有创作方法.假设我的类属性是:
@interface MyView : UIView {
UIImage *image;
NSInteger value;
Run Code Online (Sandbox Code Playgroud)
如果我坚持使用NSInteger的作为参数,我可以轻松地分配值给它.但是然后需要从该值生成"image12.png"(假设NSInteger = 12)来设置我的UIImage.像"image"+ initialValue +".png"之类的东西.我相信在Obj-C中详细表达如下:
NSString *myValue = @"image";
[myValue stringByAppendingString:[initialValue stringValue]]; //NSInteger may not respond to stringValue?!?
[myValue stringByAppendingString:@".png"]
Run Code Online (Sandbox Code Playgroud)
这是我对Obj-C的理解破裂的地方.像这样的感觉应该更容易,但我仍然感到困惑.
现在,如果initialValue是一个值为@"12"的NSString,那么它可能是?那么self.value = [initialValue integerValue];
我可以用多个stringByAppendingString调用构建图像.对于其他语言中这么简单的事情来说,这似乎很乏味.
什么是处理这样的事情的最佳方法?
有时我会在企业应用程序架构中遇到关于继承"超出风格"的评论,但我没有看到描述竞争理论的文章的链接.另外,如果应用程序已经构建而不是从头开始,那么实现是否存在差异?我认为这可能与严重依赖接口有关,但我不确定.
我已经使用泄漏工具清除了我的泄漏应用程序,但我仍然注意到,当我切换视图时,objectalloc工具会跳转分配的对象数量和占用空间.
我特别看到了很多:
GeneralBlock-16主要负责调用者NSLogv
和
GeneralBlock-0主要负责QuartzCore
关于我可以做些什么来进一步调试这个的提示?
谢谢!
只是想知道是否有任何方法可以在C#中获取NS记录.我在MSDN上阅读过,似乎有一个可以返回主机IP地址的DNS类.但是,我是在NS记录类型之后.
非常感谢
我在MATLAB中规范化矢量V如下:
normalized_V = V/norm(V);
Run Code Online (Sandbox Code Playgroud)
然而,它是在MATLAB中规范化矢量的最优雅(有效)方法吗?
我试图更好地理解django管理员,同时,我正在尝试向当前用户管理员添加一个字段.在models.py我做过
User.add_to_class('new_field', models.BooleanField(default=False))
Run Code Online (Sandbox Code Playgroud)
在admin.py中我有以下内容(字段集基本上只是从django/contrib/auth/admin.py复制)
class AdjUserAdmin(UserAdmin):
list_display = UserAdmin.list_display + ('new_field',)
list_filter = UserAdmin.list_filter + ('new_field',)
fieldsets = UserAdmin.fieldsets
fieldsets[1][1]['fields'] = ('first_name','last_name','email','new_field')
Run Code Online (Sandbox Code Playgroud)
问题是,当我这样做时,我得到错误:
AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.
我看过UserChangeForm,但看起来它已经正确地将User作为模型.我不确定new_field表格中缺少原因.
谢谢
关于这是臭臭的代码
我知道这是一个臭臭的猴子修补方式去做这个,但是子类化给我的问题主要是出于这些原因..如果我能按照上面说明的方式让它工作,我会很开心..也许很臭.
关于推荐的方式
我所知道的创建用户配置文件的推荐方式,只是在特定情况下,我看不到的优点创造一个全新的表,具有附加调用数据库的时候我要的存储是一个额外的一些信息,如is_private某些信息.如果我存储更多信息,那么我同意,建立用户配置文件更可取.
Python 2.x有两种方法可以重载比较运算符,__cmp__或者"丰富的比较运算符",如__lt__. 丰富的比较超载被认为是首选,但为什么会这样呢?
丰富的比较运算符更容易实现每个,但您必须使用几乎相同的逻辑实现其中几个.但是,如果你可以使用内置cmp和元组排序,那么__cmp__变得非常简单并完成所有的比较:
class A(object):
def __init__(self, name, age, other):
self.name = name
self.age = age
self.other = other
def __cmp__(self, other):
assert isinstance(other, A) # assumption for this example
return cmp((self.name, self.age, self.other),
(other.name, other.age, other.other))
Run Code Online (Sandbox Code Playgroud)
这种简单性似乎比重载所有6(!)丰富的比较更好地满足了我的需求.(但是,如果你依赖于"交换的论证"/反映的行为,你可以把它归结为"只是"4,但这导致并发症的净增加,在我的拙见中.)
如果我只是超载,是否有任何不可预见的陷阱需要注意__cmp__?
我明白了<,<=,==等运营商也可以被重载用于其他目的,并且可以返回任何他们喜欢的对象.我不是在询问这种方法的优点,而是仅仅考虑使用这些运算符进行比较时的差异,这与它们对数字的意义相同.
更新:克里斯托弗指出,cmp正在消失3.x. 有没有其他方法可以使实施比较变得如上所述__cmp__?
c# ×2
iphone ×2
.net-3.5 ×1
api ×1
c++ ×1
casting ×1
cocoa ×1
cocoa-touch ×1
composition ×1
debugging ×1
django ×1
django-admin ×1
dns ×1
enums ×1
inheritance ×1
instruments ×1
matlab ×1
memory-leaks ×1
objective-c ×1
performance ×1
python ×1
vector ×1
winapi ×1
xcode ×1