2015-04-17 63 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塊中指定的條件的返回值。

我的預期用途比這個例子更加複雜和實用;但是,就「如何去做」而言,它會這樣做。

相關問題