NSDictionary keysOfEntrIEsPassingTest:- (NSSet *)keysOfEntrIEsPassingTest:(BOol (^)(ID key,ID obj,BOol *stop))predicate
比方说,例如我的所有值都是NSURL,我想找回8080端口上的所有URL.这是我对编码的准备 – 虽然它对我来说真的没有意义正确:
NSSet * mySet = [myDict keysOfEntrIEsPassingTest:^(ID key,BOol *stop) { if( [[obj port] isEqual: [NSNumber numberWithInt: 8080]]) { return key; }]
那是因为我得到了以下编译器错误:
incompatible block pointer types initializing ‘voID (^)(struct objc_object *,struct objc_object *,BOol *)’,expected ‘BOol (^)(struct objc_object *,BOol *)’
我错过了什么?我很欣赏一些文档的指针,这些文档详细介绍了谓词应该是的“块对象”.
谢谢!
这是有效的代码:
NSSet *mySet = [myDict keysOfEntrIEsPassingTest:^(ID key,BOol *stop){ if ([[obj port] isEqual:[NSNumber numberWithInt: 8080]]) return YES; else return NO;}];解决方法 该错误表示您的块必须返回BOol而不是ID.检查文档.如果key / obj对通过了所需的测试,我怀疑你应该返回YES. 总结
以上是内存溢出为你收集整理的cocoa – 如何指定NSDictionary的keysOfEntriesPassingTest所需的块对象/谓词?全部内容,希望文章能够帮你解决cocoa – 如何指定NSDictionary的keysOfEntriesPassingTest所需的块对象/谓词?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)