小编And*_*rew的帖子

如何编写Objective-C完成块

我需要从我的视图控制器调用类方法,让它做它的事情,但然后只在类方法完成后执行一些操作.

(我认为我需要的是一个完成块,但如果我错了请纠正我.)

情况如下:

我正在使用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)

objective-c ios objective-c-blocks

38
推荐指数
5
解决办法
6万
查看次数

QML FontLoader无法正常工作

我正在尝试使用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)

c++ fonts qt qml

7
推荐指数
1
解决办法
5399
查看次数

在Node.js中读取套接字连接响应

我正在将PHP函数转换为JS以与Node一起使用.

PHP函数:

  • 将部分形成的包作为arg接收
  • 完成数据包
  • 创建一个套接字
  • 通过套接字发送数据包
  • 从服务器读取响应代码
  • 在数组中查找错误代码
  • 将错误代码发送回调用者

除了读取服务器响应的位之外,我已经转换了大部分函数.

原始的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)

javascript php sockets node.js

5
推荐指数
1
解决办法
1307
查看次数

Postgres:从存储函数返回结果或错误

我正在努力弄清楚如何最好地处理从 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 参数并尝试了以下用途: …

postgresql stored-procedures plpgsql stored-functions

5
推荐指数
1
解决办法
1万
查看次数

密码加密算法在从PHP转换为JS时抛出异常

下面是我必须使用的密码哈希算法,用于我正在构建的控制面板.原始函数是在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 php node.js

4
推荐指数
1
解决办法
235
查看次数