如何 return 来自 Parse CloudCode 查询的数组?
How to return an array from a Parse CloudCode Query?
我正在尝试调用 Parse CloudCode 函数并接收一个数组作为响应。不幸的是,我的 iOS 应用程序崩溃了。它认为我没有正确匹配 Parse 中的 return 类型。不幸的是,我对力的了解 - 我的意思是 Java - 是有限的。
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");
}
})
}
);
我发誓它正常工作了一天。我注释掉了 if(err)else 块以验证没有逻辑错误,但崩溃发生在这之前。
崩溃错误消息似乎有所不同,但有一些变体:__NSDateUTF8String]:无法识别的选择器已发送到实例。我偶尔也会在崩溃日志中看到 _NSTaggedDate。
我也试过改:
block:^(NSArray *results, NSError *er)
到
block:^(NSString *results, NSError *er)
和
block:^(PFObject *results, NSError *er)
为了好玩我尝试了:
block:^(NSDate *results, NSError *er)
以下是如何使用 promises return 来自云查询的结果...
Parse.Cloud.define("storyReadCount", function(request, response) {
var query = new Parse.Query("Story");
query.descending("createdAt");
query.exists("link");
query.limit (100);
query.find().then(function(results) {
response.success(results);
}, function(error) {
response.error(error);
});
});
这是解决我的问题的方法:
在我的 cloudCode 查询中添加:
query.include("UserID");
我正在尝试调用 Parse CloudCode 函数并接收一个数组作为响应。不幸的是,我的 iOS 应用程序崩溃了。它认为我没有正确匹配 Parse 中的 return 类型。不幸的是,我对力的了解 - 我的意思是 Java - 是有限的。
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");
}
})
}
);
我发誓它正常工作了一天。我注释掉了 if(err)else 块以验证没有逻辑错误,但崩溃发生在这之前。
崩溃错误消息似乎有所不同,但有一些变体:__NSDateUTF8String]:无法识别的选择器已发送到实例。我偶尔也会在崩溃日志中看到 _NSTaggedDate。
我也试过改:
block:^(NSArray *results, NSError *er)
到
block:^(NSString *results, NSError *er)
和
block:^(PFObject *results, NSError *er)
为了好玩我尝试了:
block:^(NSDate *results, NSError *er)
以下是如何使用 promises return 来自云查询的结果...
Parse.Cloud.define("storyReadCount", function(request, response) {
var query = new Parse.Query("Story");
query.descending("createdAt");
query.exists("link");
query.limit (100);
query.find().then(function(results) {
response.success(results);
}, function(error) {
response.error(error);
});
});
这是解决我的问题的方法:
在我的 cloudCode 查询中添加:
query.include("UserID");