Xcode:(用户定义的运行时属性)带负值的范围。选择?
Posted
技术标签:
【中文标题】Xcode:(用户定义的运行时属性)带负值的范围。选择?【英文标题】:Xcode:(user defined runtime attribute)Range with minus value. Alternative? 【发布时间】:2014-11-15 22:41:29 【问题描述】:我创建了一个自定义 UITextField,其中包含一个额外的用户定义的运行时属性 validRange,我可以在情节提要视图中设置它。 我使用此属性检查 EndEditing 方法以验证新设置的文本。 我工作得很好,直到我必须从 -100,100 设置一个有效范围 由于 NSRange 使用 NSUInteger,因此不可能有负值。
实现这一目标的最佳方法是什么? 如果我使用 CGSize 而不是 NSRange 是否可以接受?
更新内容 Xcode 仅为用户定义的运行时属性提供以下数据类型选择:
这意味着我无法定义一个新结构来使用 NSInteger 创建一个 CustomRange。 由于 Point,Size 都是 NSInteger,NSInteger 数据类型,我考虑过使用它们。但这肯定是一种误用,所以我想知道是否有人知道更好的解决方案,例如误用 Point 或 Size 来使其工作。
作为另一种解决方法,我可以使用 String,我会手动将其拆分为自定义 UITextField 的方法,但是没有类型安全性。
【问题讨论】:
NSRange 或 CGSize 之间没有相关性,两者的用途不同。我想知道,你打算在这里实现什么目标? 使用NSInteger
定义您自己的struct
。您可以根据需要设置为start
和length
或start
和end
。
@ldindu 我在我的问题中添加了一些信息,以便更好地了解我想要实现的目标。
@rmaddy 这是一个好主意,但我认为在这种情况下不实用,因为我需要从给定列表中进行选择(请参阅更新的问题)
【参考方案1】:
然后我建议您定义两个具有合适名称的 NSNumber 属性来表示 NSRange 值,而不是滥用 CGSize,因为使用 CGSize 会使其他读者/程序员感到困惑,因为我们有句话说,我们为别人而不是为自己编码。
还有一个NSNumber类方法如下
+ (NSNumber *)numberWithInteger:(NSInteger)value
它允许您按照您的意愿包装有符号整数值。
【讨论】:
我想这是最好的方法。我会喜欢用一个用户定义的运行时属性来实现它,但这似乎是不可能的。谢谢以上是关于Xcode:(用户定义的运行时属性)带负值的范围。选择?的主要内容,如果未能解决你的问题,请参考以下文章