小编JuJ*_*oDi的帖子

Swift类中的错误:在super.init调用时未初始化属性

我有两节课,ShapeSquare

class Shape {
    var numberOfSides = 0
    var name: String
    init(name:String) {
        self.name = name
    }
    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }
}

class Square: Shape {
    var sideLength: Double

    init(sideLength:Double, name:String) {
        super.init(name:name) // Error here
        self.sideLength = sideLength
        numberOfSides = 4
    }
    func area () -> Double {
        return sideLength * sideLength
    }
}
Run Code Online (Sandbox Code Playgroud)

通过上面的实现,我得到错误:

property 'self.sideLength' not initialized at super.init call
    super.init(name:name)
Run Code Online (Sandbox Code Playgroud)

为什么我必须self.sideLength在打电话前设置super.init

compiler-errors properties swift

201
推荐指数
9
解决办法
10万
查看次数

Swift - 类方法,必须由子类重写

是否有一种在Swift中制作"纯虚函数"的标准方法,即.一个必须被每个子类覆盖的,如果不是,会导致编译时错误?

abstract swift swift-protocols

82
推荐指数
4
解决办法
4万
查看次数

JWT和Bearer Token有什么区别?

我正在学习像Basic,Digest,OAuth2.0,JWT和Bearer Token这样的授权.

现在我有一个问题.

您知道JWT在OAuth2.0标准中被用作Access_Token.JWT出现在RFC 7519中,而Bearer Token出现在RFC 6750中.

例如,持票人:

Authorization: Bearer <token>
Run Code Online (Sandbox Code Playgroud)

我曾经通过AJAX向服务器发送令牌或者将令牌添加到url的查询字符串中.我知道也可以通过将令牌添加到请求标头来发送令牌.这是否意味着应该将令牌添加到Authorization Bearer标头?

你能告诉我JWT和Bearer Token之间的关系吗?非常感谢.

oauth token jwt

77
推荐指数
3
解决办法
4万
查看次数

在Swift中,我可以使用元组作为字典中的键吗?

我想知道我是否能以某种方式使用x,y对作为我字典的关键

let activeSquares = Dictionary <(x: Int, y: Int), SKShapeNode>()
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

Cannot convert the expression's type '<<error type>>' to type '$T1'
Run Code Online (Sandbox Code Playgroud)

和错误:

Type '(x: Int, y: Int)?' does not conform to protocol 'Hashable'
Run Code Online (Sandbox Code Playgroud)

那么..我们怎样才能使它符合要求?

dictionary tuples swift

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

Xcode 9.2上传到App Store失败,描述长度和工具链错误无效

我已经阅读了很多论坛,包括:
https://forums.developer.apple.com/thread/87862
和一些Stack Overflow帖子.

我尝试使用建议的解决方案修改我的plist

find Products/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323
Run Code Online (Sandbox Code Playgroud)

在我正在尝试加载的存档目录中,我仍然收到以下错误.我相信我有有效的Xcode和Mac OS版本.我正在运行今天发布的Xcode 9.2和High Sierra 10.13.1.为什么我的上传因这些错误而失败,我该如何解决?

上传错误消息

文本中的错误(使这篇文章更易于搜索):

分发应用程序时出现以下问题.

⚠iTunesStore 操作失败
说明长度:2651858

⚠iTunesStore 操作失败
ERROR ITMS-90534:"无效的工具链.必须使用Xcode 6或更高版本的公共(GM)版本,macOS和iOS SDK或更高版本构建新的应用程序和应用程序更新.不要提交使用beta软件,包括beta macOS版本."

xcode ios

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

具有容量的Swift init Array

如何使用特定容量在swift中初始化数组?

我试过了:

var grid = Array <Square> ()
grid.reserveCapacity(16)
Run Code Online (Sandbox Code Playgroud)

但得到错误

expected declaration 
Run Code Online (Sandbox Code Playgroud)

arrays swift

36
推荐指数
4
解决办法
3万
查看次数

Tab Bar涵盖iOS7中的TableView单元格

我有一个自定义tableViewController,我将其添加到TabBarController中

self.tabBarController.viewControllers = [NSArray arrayWithObjects:someOtherViewController, customTableViewController, nil];
self.tabBarController.selectedIndex = 1;
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,运行iOS7的iPhone 4屏幕底部的标签栏覆盖了最后1.5个tableViewCells.当我使用iOS模拟器 - iPhone Retina(4英寸)/ iOS 7.0时,问题仍然存在.

如何使tableView与屏幕底部的tabBar顶部对齐,而不使用"魔术数字"?

objective-c uitabbarcontroller uitableview ios7

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

iOS 8.0及更高版本(@ rpath/libswift_stdlib_core.dylib)仅支持可重定位的dylib(例如嵌入式框架)

我刚从Xcode 6 Beta 2升级到Xcode Beta 3,现在在构建项目时收到以下警告:

ld: warning: relocatable dylibs (e.g. embedded frameworks) are only supported on iOS 8.0 and later (@rpath/libswift_stdlib_core.dylib)
Run Code Online (Sandbox Code Playgroud)

这是一个警告,但似乎意味着我当前的设置不适用于iOS 7.1,这是我的部署目标.如何跟踪嵌入的框架,以及如何解决iOS <8.0的问题?

xcode ios xcode6

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

为什么我不能删除mongoose模型的对象属性?

当用户向我的API注册时,会返回一个用户对象.在返回对象之前,我删除了散列密码和salt属性.我必须使用

user.salt = undefined;
user.pass = undefined;
Run Code Online (Sandbox Code Playgroud)

因为当我尝试

delete user.salt;
delete user.pass;
Run Code Online (Sandbox Code Playgroud)

对象属性仍然存在并被返回.

这是为什么?

javascript mongoose node.js

22
推荐指数
3
解决办法
5725
查看次数

如何在Swift中使用dequeueReusableCellWithIdentifier?

如果我取消注释

tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?)
Run Code Online (Sandbox Code Playgroud)

我收到了错误

let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
Run Code Online (Sandbox Code Playgroud)

说的是 UITableView? does not have a member named 'dequeueReusableCellWithIdentifier'

如果我打开tableview然后错误消失了,但是在Objective-C中我们通常会检查单元格是否存在,如果不存在,我们会创建一个新单元格.在Swift中,由于提供的样板文件使用了let关键字并解开了一个可选项,因此如果它是零,我们就无法重新分配它.

在Swift中使用dequeueReusableCellWithIdentifier的正确方法是什么?

uitableview ios swift

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