小编ste*_*tis的帖子

类型[]中缺少JavaScript类型脚本属性0

我想拥有一个对象数组,如下所示.

但是,typescript会抛出错误类型[]中缺少属性0

let organisations: [{name: string, collapsed: boolean}] = [];
Run Code Online (Sandbox Code Playgroud)

javascript typescript

15
推荐指数
1
解决办法
7141
查看次数

通过扩展对结构中的私有属性进行Swift 3访问

我一直在浏览快速的文档,并研究了有关封装的一些示例,但不确定我所看到的行为。我已经在堆栈上寻找了类似的问题,浏览了文档并浏览了一些教程(请参阅下面的链接),尽管这是一个琐碎的问题,但找不到答案(可能是因为Swift发生了变化?)

创建一个表示队列的简单Struct:

struct Queue<Element> {
private var elements = [Element]()
mutating func enqueue(newElement: Element) {
    elements.append(newElement)
}

mutating func dequeue() -> Element? {
    guard !elements.isEmpty else {
        return nil
    }
    return elements.remove(at: 0)
}
}
Run Code Online (Sandbox Code Playgroud)

后来扩展为:

extension Queue {
func peek() -> Element? {
    return elements.first
}
}
Run Code Online (Sandbox Code Playgroud)

但是由于私有保护级别的原因,元素当然不可访问。它通过将元素的访问权限更改为fileprivate来起作用-但是为什么呢?

我的理解是扩展是封闭类型的一部分,并期待在网络上似乎是使用这种方式工作https://www.andrewcbancroft.com/2015/04/22/3-nuances-of-swift-扩展/

那么我对可见性的理解是错误的,还是Swift发生了变化?

inheritance visibility swift

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

从nodemailer为nodejs发送电子邮件

当我尝试从 nodemailer 发送电子邮件时,出现错误: EAUTH API 我尝试使用 Hotmail 和 Gmail 作为我的服务,正如我从文档中了解到的那样,如果 Gmail 不起作用,请不要使用它。然而,这似乎不是问题。

我想使用此电子邮件在我的应用程序中启用忘记密码功能

代码:

var smtpTransport = nodemailer.createTransport({
  service: 'Hotmail',
  auth: {
    user: email,
    pass: pass
  }
});

router.post('/forgotpassword', function(req, res){
            async.waterfall([
                function(done) {
                    User.findOne({
                        email: req.body.email
                    }).exec(function(err, user) {
                        if (user) {
                            done(err, user);
                        } else {
                            done('User not found.');
                        }
                    });
                },
                function(user, done) {
      // create the random token
      crypto.randomBytes(20, function(err, buffer) {
        var token = buffer.toString('hex');
        done(err, user, token);
      });
  },
  function(user, token, done) {
    User.findByIdAndUpdate({ …
Run Code Online (Sandbox Code Playgroud)

node.js nodemailer

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

使用CAGradientLayer旋转UIControl无法正确更新Swift

我没有使用常规按钮,而是将其归类,UIControl因为我需要为其添加渐变。我也有一种方法来添加阴影和活动指示器(在下图中不可见)作为有状态的按钮,以防止用户在(例如)进行API调用时重击该按钮。

尝试UIControl旋转该控件确实很棘手,为了做到这一点,我将阴影作为一个单独的视图添加到了包含的容器视图中,UIControl因此可以添加阴影。

现在的问题是控件的行为不像旋转视图-让我为您展示上下文的屏幕抓取: 在此处输入图片说明

这是中间旋转,但几乎是肉眼可见的- 图像显示渐变是UIView图像中蓝色长度的75%。

https://github.com/stevencurtis/statefulbutton

为了执行此旋转,我先移除shadowview,然后将渐变框架的框架更改为其边界,这就是问题所在。

func viewRotated() {
    CATransaction.setDisableActions(true)

    shadowView!.removeFromSuperview()
    shadowView!.frame = self.frame
    shadowView!.layer.masksToBounds = false
    shadowView!.layer.shadowOffset = CGSize(width: 0, height: 3)
    shadowView!.layer.shadowRadius = 3
    shadowView!.layer.shadowOpacity = 0.3
    shadowView!.layer.shadowPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: .allCorners, cornerRadii: CGSize(width: 20, height: 20)).cgPath
    shadowView!.layer.shouldRasterize = true
    shadowView!.layer.rasterizationScale = UIScreen.main.scale

    self.gradientViewLayer.frame = self.bounds
    self.selectedViewLayer.frame = self.bounds

    CATransaction.commit()

    self.insertSubview(shadowView!, at: 0)

}
Run Code Online (Sandbox Code Playgroud)

因此,通过父视图控制器调用此旋转方法:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: …
Run Code Online (Sandbox Code Playgroud)

cglayer swift

3
推荐指数
1
解决办法
133
查看次数

iOS setContentOffset无法在ipad上运行

这真的很奇怪.我有一个包含三个图像的滚动视图,用户滑动以查看下一个图像.但是,我希望第一个屏幕从中间图像开始.简单; 我将使用setContentOffset,一切都会好的.

该代码适用于iPhone模拟器,但不适用于iPad模拟器(或设备!)

CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat height = CGRectGetHeight(screen);
CGFloat width = CGRectGetWidth(screen);

CGPoint rightOffset = CGPointMake(width, 0);
[scrollView setContentOffset:rightOffset animated:YES];
Run Code Online (Sandbox Code Playgroud)

所有设置都在添加scrollView之前设置(实际上我们可以在添加了相同结果的scrollview之后执行此操作).

宽度在ipad上返回768,在iphone上返回320.

这是一个错误吗?Xcode 4.4.1和ios 6.

编辑:

看起来这与创建顺序有关; 移动到viewWillAppear而不是viewDidLoad,显然是在iphone和ipad上工作.只是不一致是非常令人惊讶的....

scrollview uiscrollview ios

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

动态编程斐波那契Swift

我正在尝试将以下实现隐瞒给Swift并遇到困难:

var mem = [];
var fibRecursiveMem = function (n) {
    if (mem[n]) return mem[n];
    if (n<=2) mem[n] = 1;
    else {
        mem[n] = fibRecursiveMem(n-1) + fibRecursiveMem(n-2);
    }
    return mem[n];
} 
Run Code Online (Sandbox Code Playgroud)

来自:https : //dev.to/rattanakchea/dynamic-programming-in-plain-english-using-fibonacci-as-an-example-37m1

我在Swift中的实现:

var mem = [Int]()
func fib (_ num: Int) -> Int {
    if (mem.count - 1 > num) {
        return mem[num]
    }
    if (num<=2) {mem[num] = 1}
    else {
        mem[num] = fib(num-1) + fib(num-2)
    }
    return mem[num]
}
Run Code Online (Sandbox Code Playgroud)

产生索引超出范围的错误。

现在,我想遵循原始算法的一般逻辑。我在翻译中做错了什么?

algorithm swift

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

迅速删除对UIView的引用

我想在点击时完全删除对UIView的引用(它是一个子视图。

@IBAction private func handleTap(_ sender: UITapGestureRecognizer) {
    if (delegate != nil) {
        delegate?.imageWasTapped(imageView.image!, photoURL: photoURL!)
        self.removeFromSuperview()
    }
    print ("tap")
}
Run Code Online (Sandbox Code Playgroud)

removeFromSuperview()似乎不足以完全删除实例(根据我的阅读),因此想

self = nil
Run Code Online (Sandbox Code Playgroud)

但是自我当然是一成不变的。

我试图将值作为inout参数传递给我的超级视图,但是self仍然是不变的。

        delegate?.imageWasTapped(imageView.image!, photoURL: photoURL!, imageView: self)
Run Code Online (Sandbox Code Playgroud)

是否足以从内存中取消分配UIView的removeFromSumerview(),或如何做到最好?

memory uiview ios swift

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

TouchableHighlight 在 React Native 中默认具有不透明度

无需触摸(默认情况下)可触摸突出显示给了我一个半透明按钮!

      <LoginButton ref={btn => { this.btn = btn; }} onPress={this._executeLoginQuery} text='Sign in'></LoginButton>
Run Code Online (Sandbox Code Playgroud)

在 LoginButton 中呈现为

render () {
  const { icon} = this.props;
    return (
    <TouchableHighlight style={styles.button} onPress={this.props.onPress}>
    <View
    style={{
      flexDirection: 'row',     justifyContent: 'center', alignItems: 'center'   }}>
      <Text style={styles.buttonText}>{this.getText()}</Text>
      </View>
      </TouchableHighlight>
      )
  }
}
Run Code Online (Sandbox Code Playgroud)

与风格

  button: {
    height: 45,
    borderRadius: 100,
    marginHorizontal: Metrics.section,
    marginVertical: Metrics.baseMargin,
    backgroundColor: Colors.blueButton,
    justifyContent: 'center',
    overflow:'hidden',
    opacity: 1.0,
  },
Run Code Online (Sandbox Code Playgroud)

给出结果为:

在此输入图像描述

正如您所看到的,背景“波浪”正在穿过 - 不仅通过按钮,还通过父级白色背景!

我怎样才能阻止这个?

react-native

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

数组范围内的最小值

我有一个价格列表,想要找到最低价格排除第一个元素(这是HackerRank上另一个问题的一个子集).

我的版本太慢而且超时.我怀疑这是由于我的ArraySlice.

这是我的(工作)代码:

func calculateMins(prices: [Int]) {
    for j in 1..<prices.count  {
        let lowestPreviousPrice = prices[1...j].min()!
        print (lowestPreviousPrice)
    }
}

calculateMins(prices: [4,8,2,4,3])
Run Code Online (Sandbox Code Playgroud)

是否有更好的性能版本,也许是不使用ArraySlice的版本?

swift

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

Swift 协议中默认参数的替代方案

据我所知,协议中不允许使用默认参数,这意味着以下内容无效:

protocol testProtocol {
    func testFunc (_ a: String, _ b: String? = nil)
}
Run Code Online (Sandbox Code Playgroud)

所以我明白 b 仍然可以通过以下声明是可选的

protocol testProtocol {
    func testFunc (_ a: String, _ b: String?)
}
Run Code Online (Sandbox Code Playgroud)

我的类可以符合这个协议:

class TestIt: testProtocol {
    func testFunc(_ a: String, _ b: String?) {
        print ("Do stuff with a and b")
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我想使用以下声明来调用此函数:

let test = TestIt()

    test.testFunc("a")
Run Code Online (Sandbox Code Playgroud)

这不可避免地无法编译,解决方案似乎是

let test = TestIt()
test.testFunc("a", nil)
Run Code Online (Sandbox Code Playgroud)

然而,将 nil 传递给函数似乎并不是一种非常快捷的处理方式。

请注意,这是一个最小的示例,尚未准备好用于生产,只是为了确定协议中传递 nil 的一般问题的解决方案。

我可以在不使用 nil 的情况下调用 testFunc 吗?

swift

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