我想拥有一个对象数组,如下所示.
但是,typescript会抛出错误类型[]中缺少属性0
let organisations: [{name: string, collapsed: boolean}] = [];
Run Code Online (Sandbox Code Playgroud) 我一直在浏览快速的文档,并研究了有关封装的一些示例,但不确定我所看到的行为。我已经在堆栈上寻找了类似的问题,浏览了文档并浏览了一些教程(请参阅下面的链接),尽管这是一个琐碎的问题,但找不到答案(可能是因为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发生了变化?
当我尝试从 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) 我没有使用常规按钮,而是将其归类,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) 这真的很奇怪.我有一个包含三个图像的滚动视图,用户滑动以查看下一个图像.但是,我希望第一个屏幕从中间图像开始.简单; 我将使用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上工作.只是不一致是非常令人惊讶的....
我正在尝试将以下实现隐瞒给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)
产生索引超出范围的错误。
现在,我想遵循原始算法的一般逻辑。我在翻译中做错了什么?
我想在点击时完全删除对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(),或如何做到最好?
无需触摸(默认情况下)可触摸突出显示给了我一个半透明按钮!
<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)
给出结果为:
正如您所看到的,背景“波浪”正在穿过 - 不仅通过按钮,还通过父级白色背景!
我怎样才能阻止这个?
我有一个价格列表,想要找到最低价格排除第一个元素(这是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的版本?
据我所知,协议中不允许使用默认参数,这意味着以下内容无效:
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 ×6
ios ×2
algorithm ×1
cglayer ×1
inheritance ×1
javascript ×1
memory ×1
node.js ×1
nodemailer ×1
react-native ×1
scrollview ×1
typescript ×1
uiscrollview ×1
uiview ×1
visibility ×1