我来自c + +,我正尝试在文本字段中为用户输入创建验证器类。 我的功能需要返回一个bool
和一条消息(如果bool
是YES消息是NULL
)。 Objective-C中是否存在类似于C++(其中包含一对值)的std::pair
?如何在Objective-C中返回类似于std :: pair的对象?
3
A
回答
6
Cocoa中没有std::pair
;你可以创建自己的。然而,更地道的解决问题的方法是类似的回传失误,即其他方法,传递一个指针的指针错误,并返回BOOL
:
-(BOOL) validateInput:(id)input error:(NSError**)errPtr {
// Validate the input
// If the input is valid, do not assign `errPtr`, and return `YES`
// Otherwise, create a `NSError` object, and assign to errPtr
}
您可以调用此方法如下:
NSError *err;
if (![validator validateInput:@"some input" error:&err]) {
// Show the error
}
对于这个成语是如何在可可使用的示例,请参见NSRegularExpression
类的regularExpressionWithPattern:options:error:
方法。
7
嗯,不完全是一对,但你有几种选择:
一。使用数组或字典( “标准集合类”):
NSArray *pair1 = @[@NO, @"Foo"];
NSArray *pair2 = @[@YES, [NSNull null]];
或
NSDictionary *pair = @{@"Flag" : @NO, @"Message" : @"Foo" };
所以你的想法...
二:为什么不写自己的Pair类如果它还不存在?
@interface MyPair: NSObject
@property (assign) BOOL flag;
@property (strong) NSString *message;
@end
3
为什么不尝试使用Objective-C++?只需用.mm扩展名命名源文件,然后就可以将C++与objective-c混合使用。你不能混合类,但你可以使用标准模板的东西。因此,在某些对象Foo中,我有一个使用此代码的doFoo方法:
std::pair<id, NSString*> foo;
foo.first = @"First";
foo.second = @"second";
NSLog(@"%@ %@", foo.first, foo.second);
相关问题
- 1. 如何在另一个std :: pair中插入一对std :: pair?
- 2. std :: pair可可粉或基础套装中的类似物?
- 3. 在数组中加载对象并返回数组,类似于结果
- 4. 如何在php中使用类似于java的对象(CodeIgniter)
- 5. 如何在Typescript中创建类似于简单对象的JavaScript?
- 6. Django的restframework generics.ListCreateAPIView返回类似的对象列表中
- 7. 'java.lang.Class.getDeclaredField()'的ObjectiveC中的类似方法'
- 8. std :: pair抱怨不完整的类型
- 9. 如何将Loader对象返回为类
- 10. 如何从类对象返回值?
- 11. 继承如何返回子类对象?
- 12. 如何修改参考std :: pair的值?
- 13. 如何从C#中的类self返回类的对象?
- 14. 如何在php DOMXPath对象中返回?
- 15. 如何返回在另一个类中聚合的点对象?
- 16. 是否有一个标准的C++函数对象用于拆分std :: pair?
- 17. 如何从函数返回std :: seed_seq对象
- 18. 如何实现类似于std :: vector的自定义类
- 19. 如何初始化const std :: pair?
- 20. BCMP()返回1,尽管块类似于
- 21. 返回类对象或无对象
- 22. 返回WPF中的类对象列表
- 23. 如何从返回的对象jQuery中
- 24. 在ObjectiveC中创建类似NSURLConnection的委托人
- 25. 类返回对象混乱
- 26. 返回类型对象
- 27. 返回对象类型C
- 28. 如何在Linq中返回强类型对象?
- 29. 如何在C++中通过引用返回类对象?
- 30. php有C++的std :: pair吗?
只需创建您自己的类。 ObjC没有泛型设施,所以图书馆里的某种类不会太有用。 – millimoose 2013-02-09 22:44:51
另外:为什么不使用'std :: pair'呢? – 2013-02-09 22:55:40