我需要从我的视图控制器调用类方法,让它做它的事情,但然后只在类方法完成后执行一些操作.
(我认为我需要的是一个完成块,但如果我错了请纠正我.)
情况如下:
我正在使用Parse.com作为我的应用程序的后端.当用户注册帐户时,他们会在弹出窗口中输入他们的姓名,公司和其他信息,然后单击"提交".提交按钮链接到一个类方法(如下所示),该方法获取其PFUser对象和公司名称并创建一些数据库对象.函数完成后,使用委托解除弹出窗口.
问题是我需要按特定顺序创建这些对象,因为它们依赖于彼此对象的存在.问题是,在单击提交后立即调用解除弹出窗口的委托方法,因为它是堆栈中的下一个.
保存Parse对象时,会调用一个看起来像这样的方法:(这是我希望编写的,我认为可以解决我的问题)
[someParseObject saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
// Code here runs AFTER the method completes.
// This also happens on another thread which
// I'd like to implement as well.
}];
Run Code Online (Sandbox Code Playgroud)
所以,我需要弄清楚如何做以下事情:(与块有关的一切都是完全错误的我确定)
SignUpViewController.m
myUserOrg *userOrg = [myUserOrg object]; // myUserOrg = Custom PFObject Subclass
// My method that takes in a user object and a string, creates
// the database objects in order.
[userOrg registerNewUserOrgWithUser:(PFUser*) andCompanyName:(NSString*) companyName withBlock(somethingHere)block {
if(error) {
NSLog(@"Unable to create org!"); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用QML的内置FontLoader元素为我们的应用程序加载自定义字体而没有成功.
我尝试过使用相同结果的OTF和TTF字体.
字体与项目文件位于同一目录中.只有一个QML,这个FontLoader所在的主要QML.
它应该是这样的:

这是我的代码:
import QtQuick 2.0
Rectangle {
width: 360
height: 360
FontLoader {
id: cFontLoader
source: "./fontlol.ttf"
}
Text {
id: testText
anchors.centerIn: parent
text: "Hello Fonts!"
font.family: cFontLoader.name
font.pointSize: 32
}
}
Run Code Online (Sandbox Code Playgroud) 我正在将PHP函数转换为JS以与Node一起使用.
PHP函数:
除了读取服务器响应的位之外,我已经转换了大部分函数.
原始的PHP函数(注释是我对代码的作用的理解.可能不正确)
function serverInteractive($buf) { // $buf = partially formed packet
$fp = fsockopen($ip, $port , $errno, $errstr, 5);
$rs = '';
if (!$fp) return $this -> fsockerror;
$packet = pack("s", (strlen($buf)+2)).$buf; // Finalizes the packet
fwrite($fp, $packet); // Sends the packet to the server.
// ----- Read Server Response START -----//
$len = unpack("v", fread($fp, 2));
$rid = unpack("c", fread($fp, 1));
for ($i = 0; $i < …Run Code Online (Sandbox Code Playgroud) 我正在努力弄清楚如何最好地处理从 Postgres 存储函数返回到我的应用程序的结果或错误。
考虑以下人为的伪代码示例:
app.get_resource(_username text)
RETURNS <???>
BEGIN
IF ([ ..user exists.. ] = FALSE) THEN
RETURN 'ERR_USER_NOT_FOUND';
END IF;
IF ([ ..user has permission.. ] = FALSE) THEN
RETURN 'ERR_NO_PERMISSION';
END IF;
-- Return the full user object.
RETURN QUERY( SELECT 1
FROM app.resources
WHERE app.resources.owner = _username);
END
Run Code Online (Sandbox Code Playgroud)
该函数可能因特定错误而失败,也可能成功并返回 0 个或更多资源。
首先,我尝试创建一个自定义类型以始终用作每个函数中的标准返回类型:
CREATE TYPE app.appresult AS (
success boolean,
error text,
result anyelement
);
Run Code Online (Sandbox Code Playgroud)
然而 Postgres 不允许这样做:
[42P16] ERROR: column "result" has pseudo-type anyelement
Run Code Online (Sandbox Code Playgroud)
然后我发现了 OUT 参数并尝试了以下用途: …
下面是我必须使用的密码哈希算法,用于我正在构建的控制面板.原始函数是在PHP中,但我正在重写它以与JavaScript中的Node.js一起使用.
一切似乎都很好,但接着我打电话给fMod崩溃:
RangeError: toFixed() digits argument must be between 0 and 20
Run Code Online (Sandbox Code Playgroud)
该fmod函数似乎与其他值一起正常工作.我已经标记了fMod引发异常的行.
密码的正确哈希值应为:
0x31c7296631df873d0891b7b77ae0c6c6
Run Code Online (Sandbox Code Playgroud)
码:
// JavaScript Version
var pass = "Cake99";
console.log(pCrypt2(pass));
function pCrypt2(plain) {
var array_mul = [213119, 213247, 213203, 213821];
var array_add = [2529077, 2529089, 2529589, 2529997];
var dst = Array.apply(null, new Array(16)).map(Number.prototype.valueOf,0);
var key = Array.apply(null, new Array(16)).map(Number.prototype.valueOf,0);
for (var i = 0; i < plain.length; i++ ) {
dst[i] = key[i] = ord(plain.substr(i, 1)); …Run Code Online (Sandbox Code Playgroud) javascript ×2
node.js ×2
php ×2
c++ ×1
fonts ×1
ios ×1
objective-c ×1
plpgsql ×1
postgresql ×1
qml ×1
qt ×1
sockets ×1