我想調用一個Parse CloudCode函數並接收一個數組作爲響應。不幸的是我的iOS應用程序崩潰。它認爲我不正確地匹配來自Parse的返回類型。不幸的是,我對這個部隊的知識 - 我的意思是Java - 是有限的。如何從Parse CloudCode查詢返回數組?
的iOS代碼:
[PFCloud callFunctionInBackground:@"storyReadCount"
withParameters:@{}
block:^(NSArray *results, NSError *er)
{
if (er) {
NSLog(@"the error is %@", er);
}else{
if (results.count > 0) {
//iterate through results adding story objects to array
for (int lCounter = 0; lCounter < results.count; lCounter ++) {
PFObject *singleObject = [results objectAtIndex: lCounter];
RSSStory *singleStory = [[RSSStory alloc] init];
singleStory.link = [singleObject objectForKey: @"link"];
singleStory.readCount = [singleObject objectForKey: @"count"];
singleStory.loveCount = [singleObject objectForKey: @"heart"];
[array addObject: singleStory];
}
_totalStoryReadCount = array;
[[NSNotificationCenter defaultCenter] postNotificationName: @"PriorStoryCountLoaded" object: nil];
}
}
}
];
解析CloudCode:
//gets and returns array containing number of times each article has been read
Parse.Cloud.define("storyReadCount", function(request, response) {
var query = new Parse.Query("Story");
query.descending("createdAt");
query.exists("link");
query.limit (100);
query.find({
success: function(results) {
response.success(results);
},
error: function(error) {
response.error("Failed");
}
})
}
);
我發誓這是一天正常工作。我評論說,如果(err)else block來驗證沒有邏輯錯誤,但在此之前發生崩潰。似乎
崩潰錯誤消息到變化,但一些變化:__NSDate UTF8字符串]:無法識別的選擇發送到實例。我也偶爾在崩潰日誌中看過_NSTaggedDate。
我也試圖改變:
block:^(NSArray *results, NSError *er)
到
block:^(NSString *results, NSError *er)
和
block:^(PFObject *results, NSError *er)
和樂趣我想:
block:^(NSDate *results, NSError *er)
才能添加找到發生崩潰的行的異常斷點?如果我不得不猜測,我會說你的一個自定義類 - 也許是RSSStory - 聲明瞭一個NSString類型的屬性,你的解析數據已經定義爲一個日期。 – danh
看來問題在於CloudCode部分。我猜測我沒有正確格式化查詢結果,然後再返回它們。如果我改變\t \t \t \t \t \t \t response.success(results); 至 response.success(「Harray」); 它不會崩潰。 –