2015-04-17 68 views
4

我有这个问题最近:
它是如何显示 enter image description here
自动完成未完成的块(它使用的)。
如何它需要 works okXcode中没有表现出对块自动完成在parse.com

+0

自动完成在那里看起来不错,究竟发生了什么? –

+0

我添加了一个链接来显示Xcode行为有什么问题 –

+0

从您的描述中可以看出,这不是很清楚,但从我所看到的第一张图片是正确的自动填充,第二张是您目前遇到的自动补全。即这是您遇到问题的联系人项目。那是对的吗? –

回答

0

我使用了前一代的Xcode,它工作得很好。

0

据我所知,你有

  • 开始写调用自动完成菜单

  • 按Enter键创建块

  • 按Tab转到下一个参数
  • 再次点击进入t o写入参数
  • (必要时重复最后2个步骤)。
  • 然后填写块的内部。

如果还是不行,请尝试以下(这是一个有点痛,因为Xcode是不可靠的)

  • 确保您输入正确的文件(和当前文件知道解析,在这种情况下)
  • 尝试清理项目
  • 尝试退出并重新启动Xcode(不只是红色的按钮,但真正的应用程序重新启动)。
+0

看看请求的结果,并找出我的意思是自动完成的问题 –

+0

我在我的答案中添加了一些想法 –

+0

尝试了所有这一切,我使用原始代码parse.com和空白项目,它仍然取决于使用它,它也使用PFquery init不作为实例类型 –

0

我发现你必须自己手动添加块语法。

如果你去解析头文件,然后用它来链接到PFUserResult的typedef,它给你typdefs名单:

typedef void (^PFBooleanResultBlock)(BOOL succeeded, NSError *PF_NULLABLE_S error); 
typedef void (^PFIntegerResultBlock)(int number, NSError *PF_NULLABLE_S error); 
typedef void (^PFArrayResultBlock)(NSArray *PF_NULLABLE_S objects, NSError *PF_NULLABLE_S error); 
typedef void (^PFObjectResultBlock)(PFObject *PF_NULLABLE_S object, NSError *PF_NULLABLE_S error); 
typedef void (^PFSetResultBlock)(NSSet *PF_NULLABLE_S channels, NSError *PF_NULLABLE_S error); 
typedef void (^PFUserResultBlock)(PFUser *PF_NULLABLE_S user, NSError *PF_NULLABLE_S error); 
typedef void (^PFDataResultBlock)(NSData *PF_NULLABLE_S data, NSError *PF_NULLABLE_S error); 
typedef void (^PFDataStreamResultBlock)(NSInputStream *PF_NULLABLE_S stream, NSError *PF_NULLABLE_S error); 
typedef void (^PFStringResultBlock)(NSString *PF_NULLABLE_S string, NSError *PF_NULLABLE_S error); 
typedef void (^PFIdResultBlock)(PF_NULLABLE_S id object, NSError *PF_NULLABLE_S error); 
typedef void (^PFProgressBlock)(int percentDone); 

你必须再手动复制粘贴。这有点痛苦,我不确定为什么自动完成功能停止工作。

并且不要忘记添加^!

+0

这是因为Xcode版本 –

0

这可能会使您的下一步比答案更清晰,答案可能会或可能不会解答您的问题(我无法说出)。试试这个:

下面的代码显示你如何设置块中之块,这样的Xcode将自动完成的参数,并且返回值当您使用的块:

在头文件:

typedef BOOL (^Condition)(void); 
typedef void (^Success)(void); 
typedef void (^Failure)(void); 
typedef void (^Task)(Condition condition, Success success, Failure failure); 

@property (copy, nonatomic, readwrite) Task task; 
@property (copy, nonatomic, readwrite) Condition condition; 
@property (copy, nonatomic, readwrite) Success success; 
@property (copy, nonatomic, readwrite) Failure failure; 

在实现文件:

- (Task)task 
{ 
    return ^(Condition condition, Success success, Failure failure) { 
     if (condition()) 
     { 
      success(); 
     } else { 
      failure(); 
     } 
    }; 
} 

在该任务属性的任何类授予访问权的实现文件,是键入路径属性,以及属性名称本身,直到Xcode的自动完成剩下的:

AppServices.task(<#^BOOL(void)condition#>, <#^(void)success#>, <#^(void)failure#>) 

按Tab键前进到第一个参数(condition),然后按回车键;重复其余两个参数(successfailure):

AppServices.task(^BOOL{ 
     <#code#> 
    }, ^{ 
     <#code#> 
    }, ^{ 
     <#code#> 
    }) 

替换code与您的代码,并确保用于返回一个非void类型的任何块)返回适当的值(condition回报BOOL):

[class].task(^BOOL{ 
     return TRUE; 
    }, ^{ 
     NSLog(@"TRUE"); 
    }, ^{ 
     NSLog(@"FALSE"); 
    }); 

在这个例子中,工作块执行任一SuccessFailure块取决于在Condition块中指定的条件的返回值。

我的预期用途比这个例子更加复杂和实用;但是,就“如何去做”而言,它会这样做。

相关问题