小编use*_*965的帖子

为什么插入或删除行时我的UITableView会"跳转"?

(很高兴接受Swift或Objective-C的答案)

我的表视图有几个部分,当按下一个按钮时,我想在第0部分的末尾插入一行.再次按下该按钮,我想删除同一行.我几乎工作的代码看起来像这样:

// model is an array of mutable arrays, one for each section

- (void)pressedAddRemove:(id)sender {
    self.adding = !self.adding;  // this is a BOOL property
    self.navigationItem.rightBarButtonItem.title = (self.adding)? @"Remove" : @"Add";

    // if adding, add an object to the end of section 0
    // tell the table view to insert at that index path

    [self.tableView beginUpdates];
    NSMutableArray *sectionArray = self.model[0];
    if (self.adding) {
        NSIndexPath *insertionPath = [NSIndexPath indexPathForRow:sectionArray.count inSection:0];
        [sectionArray addObject:@{}];
        [self.tableView insertRowsAtIndexPaths:@[insertionPath] withRowAnimation:UITableViewRowAnimationAutomatic];

    // if removing, remove the …
Run Code Online (Sandbox Code Playgroud)

uitableview ios

23
推荐指数
1
解决办法
9205
查看次数

如何全局删除已安装的npm包?

我认为我一直在错误地使用npm,大多数时候全局安装(使用-g)而不是本地安装(使用-save).现在我有一长串全局包,我希望/应该清理它们.

(**我是新手,除了OCD整洁之外,我不想在没有明确提及它的情况下意外地在应用程序中使用包,否则在某个地方部署它可能会成为一个难题.).

我知道我可以npm uninstall <package> -g 用来做实际删除,但我该如何决定应该留下什么? 有一个名为"cuddly-bunny@1.2.3"之类的looong列表等等.

有没有办法确定一个项目是否正在使用它,或者它是否是全球需要的东西?这将是一个漫长的一天去每个人的文档.或者也许有一条经验法则,例如:"一个人通常需要x,y和z,你可以删除其余部分"?

此外,一旦我有一个删除列表,我唯一的选择是逐个执行所有这些unistall -g命令?

node.js npm

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

使用passport-jwt验证节点API

我正在尝试使用passport-jwt设置JWT身份验证.我想我采取了正确的步骤,但测试GET不会成功,我不知道如何调试它.

这就是我所做的:

  1. 尽可能直接设置passport-jwt

    var jwtOptions = {
        secretOrKey: 'secret',
        issuer: "accounts.examplesoft.com",  // wasn't sure what this was, so i left as defaulted in the doc
        audience: "yoursite.net"   // wasn't sure what this was, so i left as defaulted in the doc
      };
    
    jwtOptions.jwtFromRequest = ExtractJwt.fromAuthHeader();
    
    passport.use(new JwtStrategy(jwtOptions, function(jwt_payload, done) {
      User.findOne({id: jwt_payload.sub}, function(err, user) {
        if (err) {
            return done(err, false);
        }
        if (user) {
            done(null, user);
        } else {
            done(null, false);
            // or you could create …
    Run Code Online (Sandbox Code Playgroud)

javascript node.js passport.js

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

Angular服务缓存一个值

我的服务需要异步检索一个值,但是一旦我拥有它,我想使用该值的缓存版本.

当两个控制器调用此服务时,我希望第一个控制器缓存检索到的值,第二个控制器使用缓存值,但根据日志,我从未找到缓存值.当它运行时,我看到一条日志消息,显示正在缓存的值,然后,当我按照一个角度路由到另一个控制器时,我没有看到服务找到缓存的值.为什么它没有按照我的期望运行**?**

angular.module('myApp.services').factory('Config', function() {

    var Config = { };

    Config.currentYear = function() {
        if (Config._currentYear) {
            // sadly, we never execute here
            console.log("returning cached year");
            return Parse.Promise.as(Config._currentYear);
        }
        return Parse.Config.get().then(function(config) {
            console.log("caching year");
            Config._currentYear = config.get("currentYear");
            return Config._currentYear;
        });
    };

    return Config;

});
Run Code Online (Sandbox Code Playgroud)

一些注意事项:(1)我将缓存的属性命名为_currentYear,添加下划线以避免与函数名冲突.不确定我是否需要这样做.(2)当缓存值时,我返回一个履行的承诺,因此函数总是返回一个promise ...也不确定是否需要它,但认为它不会受到伤害.

javascript promise angularjs parse-platform angularjs-service

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

缓存来自 NSUserDefaults 的结果?

尝试一些 iOS 编程,我使用 NSUserDefaults 来保存我的应用程序需要的几个 NSNumbers。我正在使用典型的代码来获取和设置值,例如

- (NSNumber *)myUserDefaultNumber {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    return [defaults objectForKey:@"XYZ_MyNumber"];
}
Run Code Online (Sandbox Code Playgroud)

但我不知道的是运行时成本。我可以像普通的 getter 一样使用它,在我需要像 那样的值时调用它[self myUserDefaultNumber];,可能经常吗?

或者是否有足够的额外成本来激励我进行缓存,例如:

// setup a property called myUserDefaultNumber, and
- (NSNumber *)myUserDefaultNumber {
    if (!_myUserDefaultNumber) {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        _myUserDefaultNumber = [defaults objectForKey:@"XYZ_MyNumber"];
    }
    return _myUserDefaultNumber;
}
Run Code Online (Sandbox Code Playgroud)

我知道我不应该过早优化,但一开始就做明显愚蠢的事情也是错误的。我的第一种方法比简单的记忆差多少?(关于 setter 的同样问题,它可能更贵)。

objective-c nsuserdefaults ios

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

如何将jwt身份验证与ACL混合使用

我已经能够使用JWT战略实施护照,而且效果很好.我受jwt保护的路线看起来像这样......

app.get('/thingThatRequiresLogin/:id', passport.authenticate('jwt', { session: false }), thingThatRequiresLogin.findById);
Run Code Online (Sandbox Code Playgroud)

现在我需要将某些内容的访问限制为仅属于某个角色的登录用户.我希望我能像这样表达:

app.get('/thingThatRequiresLogin/:id', MAGIC, thingThatRequiresLogin.findById);
Run Code Online (Sandbox Code Playgroud)

哪里 MAGIC = require logged-in users, but only those with role x or y

node_acl似乎是一个很好的解决方案,我理解它到了一定程度,但后来我在doc中找到了这个...

我们可以保护这样的资源:

app.put('/blogs/:id', acl.middleware(), function(req, res, next){…}
Run Code Online (Sandbox Code Playgroud)

中间件将保护req.url命名的资源,从req.session.userId中选择用户并检查req.method的权限,因此上述内容将等同于:

我如何将其与我的jwt策略混合使用?我唯一的想法是放弃node_acl middleware,而是将acl检查代码添加到我的jwt策略中.但那就是我遇到麻烦的地方.我的jwt函数看起来像这样:

passport.use(new JwtStrategy(jwtOptions, function(jwt_payload, done) {
    User.findOne({id: jwt_payload.sub}, function(err, user) {
        if (err) {
            return done(err, false);
        }
        if (user) {
            done(null, user);
        } else {
            done(null, false);
            // or you could create a new account
        }
    });
}));
Run Code Online (Sandbox Code Playgroud)

根据node_acl,我可以问这样的事情......

acl.isAllowed('jsmith', 'blogs', ['edit','view','delete']) …
Run Code Online (Sandbox Code Playgroud)

javascript acl node.js express passport.js

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

为什么这两个字符串==但不是===

我知道我会在这结束时感到愚蠢,但我一直在努力...

if (user._id == req.params.id) {
    console.log("match");           
} else {
    console.log("'" + user._id + "' does not match '" + req.params.id + "'");
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,比较两个相同的字符串并找到匹配项.但是我的jshint告诉我使用这个===我理解的运算符(从这里)来表示类型也被检查.

替换===我的测试失败,生成控制台输出,如;

'56e0a2085b89105924963dc3'与'56e0a2085b89105924963dc3'不符

我认为滴答声'证明两端都没有空格.该文章表明类型不匹配或其中一个字符串是使用new String构造函数创建的,但我不控制生成这些字符串的代码.我该怎么办?

  1. 将它们转换成别的东西进行比较?...哎呀,什么?
  2. 抑制或忽略jshint?......这就是懒惰的开发人员以后遇到麻烦的方式
  3. 调试更多?......但是怎么样?我甚至不知道如何记录对象的类型(在JS中,这似乎是通过语言怪异的其他长途旅行).

javascript

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

如何从JS类的构造函数调用函数

我正在创建一个矩阵类(将在react应用中使用),我想以此方式定义它:

class Matrix extends Object {
    constructor(r, c) {
        super();
        this.rows = new Array(r);
        for (var i=0; i<r; i++) {
            this.rows[i] = new Array(c);
        }
        this.assign((v,i,j) => (i===j)? 1:0);   // ERROR HERE
    }
    assign(f) {
        for (var i=0; i<this.rows.length; i++) {
            for (var j=0; j<this.rows[i].length; j++) {
                this.rows[i][j] = f(this.rows[i][j], i, j);
            }
        }
    }
    // and so on
Run Code Online (Sandbox Code Playgroud)

这可以通过webpack编译,但是在运行时,我在chrome控制台中收到一个错误,提示_this.assign不是function

我可以这样工作:

constructor(r, c) {
    super();
    this.rows = new Array(r);
    for (var i=0; i<r; i++) {
        this.rows[i] = new …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs webpack

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

如何在react-bootstrap中替换容器类

我已经安装了react-bootstrap,并证明我可以使用网格组件,这是我的主要需求。但是,为什么找不到“容器”,我应该如何包装最外面的内容,以使页面具有页边距以及通常由引导程序设置的其他内容?

我知道我可以使用常规CSS,但(a)容器不能更干净以匹配其中的引导程序,以及(b)除边距之外还有什么其他内容可以包装所有内部内容,并且仍然可以正常工作好?

reactjs react-bootstrap

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

如何让superagent回报承诺

我一直在学习Node/Javascript,从一开始就使用promises(我不知道如何使用promises,并且常常想知道其他人如何在没有它们的情况下相处).

因此,我有时需要"宣传"简单的内容,例如阅读文件fs:

var readFile = function(path) {
    return new Promise(function(fulfill, reject) {
        fs.readFile(path, function(err, data) {
            if (err) { reject(err); }
            else { fulfill(data); }
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

这一直很有效.现在我需要做同样的事情superagent,但它使用的链式风格让我陷入困境.

var request = require('superagent');
request.get(...).set(...).set(...).end(callback);  // stuck!
Run Code Online (Sandbox Code Playgroud)

我想end()用一个返回promise 的方法替换方法(或忽略它并添加一个新方法).像这样......

var endQ = function() {
    return new Promise(function(fulfill, reject) {
        this.end(function(err, res) {     // "this" is the problem!
            if (err) { reject(err); }
            else { fulfill(res); }
        });
    });
};

// then I could …
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise superagent

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