在Objective-C中,可以将符合协议的类指定为方法参数.例如,我可以有一个只允许UIViewController
符合的方法UITableViewDataSource
:
- (void)foo:(UIViewController<UITableViewDataSource> *)vc;
Run Code Online (Sandbox Code Playgroud)
我无法在Swift中找到一种方法(也许它还不可能).您可以使用指定多个协议func foo(obj: protocol<P1, P2>)
,但是如何要求对象也是特定类?
在iPhone上,我使用NSURLRequest对一大块数据执行HTTP请求.对象分配峰值,我相应地分配数据.当我完成数据后,我会相应地释放它 - 但是仪器没有显示任何已释放的数据!
我的理论是,默认情况下,HTTP请求被缓存,但我不希望我的iPhone应用程序缓存这些数据.
有没有办法在请求后清除此缓存或阻止任何数据首先被缓存?
我尝试过使用下面记录的所有缓存策略:
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
theRequest.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
Run Code Online (Sandbox Code Playgroud)
但似乎没有什么可以释放记忆!
我在尝试测试应用时遇到此错误.
仅构建设备不能用于运行此目标.
没有受支持的iOS设备可用.连接设备以运行应用程序或选择模拟设备作为目标.
如何从一个响应break
Swift中的语句的嵌套结构中打破外部循环?
例如:
while someCondition {
if someOtherCondition {
switch (someValue) {
case 0: // do something
case 1: // exit loop
case 2...5: // do something else
default: break
}
} else {
someCondition = false
}
}
Run Code Online (Sandbox Code Playgroud)
将break
只会让我离开的switch
,而在斯威夫特,它具有为空的情况下不得使用.我怎样才能从内部完全退出循环switch
?
我有这个带有String
值的枚举,它将用于告诉API方法记录服务器消息具有什么样的服务器性.我正在使用Swift 1.2,因此枚举可以映射到Objective-C
@objc enum LogSeverity : String {
case Debug = "DEBUG"
case Info = "INFO"
case Warn = "WARN"
case Error = "ERROR"
}
Run Code Online (Sandbox Code Playgroud)
我收到了错误
@objc enum raw type String不是整数类型
我没有设法找到任何说只有整数可以从Swift转换为Objective-C的地方.是这样的吗?如果是这样,有没有人有任何关于如何在Objective-C中提供这样的东西的最佳实践建议?
我想将am/pm格式时间转换为24小时格式时间
6:35 PM to 18:35
Run Code Online (Sandbox Code Playgroud)
我在操场上尝试了这段代码,但如果我把时间单独放在上面似乎没有用
let dateAsString = "02/12/15, 6:35 PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH"
let date = dateFormatter.dateFromString(dateAsString) //returns nil
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
谢谢.
我正在尝试为Swift开发,它进展顺利.我遇到的一个问题是找出如何在语言中以编程方式设置字体样式.
例如,在这个标签中,我编写了下面的代码,例如,我如何才能使它成为Helvetica Neue Ultralight?
label.font = UIFont (name: "Helvetica Neue", size: 30)
Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个简单的Swift应用来计算增值税(增值税= 20%).
class ViewController: UIViewController {
@IBOutlet var resultTextView: UITextView!
@IBOutlet var inputTextField: UITextField!
@IBOutlet var calculateVATButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
func taxesFree(number: Int)-> Double{
var textfield = self.inputTextField.text.toInt()!
let VAT = 0.2
var result = textfield * VAT
return result
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我一直在努力
二进制运算符*不能应用于Int和Double类型的操作数
在结果行上
var result = textfield * VAT
Run Code Online (Sandbox Code Playgroud)
在功能里面.
我正在创建一个内部网asp.net mvc应用程序,公司中的每个人都应该可以访问它.我需要运行模拟数据库访问的网站等,但我想知道每个用户是谁.
当我看着Page.User.Identity.Name
它的空白时.即使网站正在模拟运行,是否可以获取用户的Windows帐户名称?
编辑: 这里有更多信息.我在IIS 6中有一个运行匿名访问的站点.该站点在可以访问数据库的系统帐户下运行(因为所有员工都无权访问数据库).
我的web.config有<authentication mode="Windows" />
和<identity impersonate="true"/>
我的目标是用户不必登录 - 他们登录我们网络的事实(以及该网站不在外部IP上的事实)是足够的身份验证.我想知道用户是谁以跟踪他们所做的更改等.
我正在阅读Swift文档,查看关于类型转换的部分.
该文档讨论了[AnyObject]
从Foundation框架中获取类型的数组(NSArray *
Objective-C中的内容).
首先,文档提供了这个示例:
for object in someObjects {
let movie = object as Movie
println("Movie: '\(movie.name)', dir. \(movie.director)")
}
Run Code Online (Sandbox Code Playgroud)
现在,我想稍微改变一下这个例子,我不知道所有对象都是类型的Movie
,所以我会这样做:
for object in someObject {
if let movie = object as? Movie {
println("Movie: '\(movie.name', dir. \(movie.director)")
}
}
Run Code Online (Sandbox Code Playgroud)
然后,文档提供了编写第一个循环的更好方法的示例:
for movie in someObjects as [Movie] {
println("Movie: '\(movie.name)', dir. \(movie.director)")
}
Run Code Online (Sandbox Code Playgroud)
我们someObjects
从一个[AnyObject]
到另一个向下倾斜的地方,[Movie]
所以我们不必在循环中贬低.
这让我想到,阵列可以作为一个整体选择垂头丧气吗?
if let someMovies = someObjects as? [Movie] {
for movie in someMovies { …
Run Code Online (Sandbox Code Playgroud) swift ×7
ios ×2
arrays ×1
asp.net-mvc ×1
caching ×1
casting ×1
cocoa-touch ×1
enums ×1
interop ×1
loops ×1
nested-loops ×1
objective-c ×1
time ×1
uifont ×1
xcode ×1