按照本教程,我正在学习Swift for iOS 8/OSX 10.10 ,并且多次使用术语" unwrapped value ",如本段(在Objects和Class下):
使用可选值时,您可以写吗?在诸如方法,属性和下标之类的操作之前.如果之前的值?是零,一切都在?被忽略,整个表达式的值为零.否则,可选值是解包,并且后面的一切都是?作用于未包装的价值.在这两种情况下,整个表达式的值都是可选值.
let optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square")
let sideLength = optionalSquare?.sideLength
Run Code Online (Sandbox Code Playgroud)
我没有得到它,并在没有运气的情况下在网上搜索.
这意味着什么?
根据Cezary的回答,原始代码的输出与最终解决方案(在操场上测试)之间存在细微差别:


在第二种情况下,超类的属性显示在输出中,而在第一种情况下有一个空对象.
在这两种情况下,结果不应该是相同的吗?
相关问答:Swift中的可选值是什么?
我希望在我的应用程序中显示一个简单的启动屏幕,使用Xcode 6.0.1构建.
我以两种方式添加了一个启动屏幕:作为XIB(使用默认名称,LaunchScreen.xib)和作为xcassets中的launchimage设置.
我已确保将"启动屏幕文件"设置为LaunchScreen.xib.
我已经模拟了所有可用的设备(例如,"iPhone5 iOS8"/"iPhone5s iOS8"/"iPhone6 iOS8".请注意,模拟器中只有iOS 8可用).
在iOS 8之前,我们将下面的代码与supportedInterfaceOrientations和shouldAutoRotate委托方法结合使用,以强制应用程序方向指向任何特定方向.我使用下面的代码段以编程方式将应用程序旋转到所需的方向.首先,我正在改变状态栏方向.然后只显示并立即关闭模态视图会将视图旋转到所需的方向.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)
但这在iOS 8中失败了.而且,我已经看到堆栈溢出的一些答案,人们建议我们应该始终从iOS 8开始避免这种方法.
更具体地说,我的应用程序是一种通用类型的应用程序.总共有三个控制器.
First View控制器 - 它应该支持iPad中的所有方向,并且只支持iPhone中的纵向(主页按钮).
第二视图控制器 - 它应该只支持所有条件下的横向
第三视图控制器 - 它应该只支持所有条件下的风景
我们使用导航控制器进行页面导航.从第一个视图控制器,在按钮单击操作上,我们在堆栈上推送第二个.因此,当第二个视图控制器到达时,无论设备方向如何,应用程序都应仅锁定横向.
下面是我shouldAutorotate和supportedInterfaceOrientations第二和第三视图控制器中的方法.
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
Run Code Online (Sandbox Code Playgroud)
对于这种或任何更好的方法来锁定iOS 8的特定方向的视图控制器是否有任何解决方案.请帮忙!!
要将应用程序分发给我们的测试人员,我们使用Xcode,我们使用以下过程:
但是使用Xcode 6,这个工作流程发生了一些变化.我仍然可以选择Ad-Hoc分发选项,但我无法选择我想要的配置文件.这使我们无法控制使用哪个签名证书和配置文件配置(我们使用推送通知).
默认情况下,使用iPhone distribution签名身份并XC Ad Hoc生成某种配置配置文件,如下图所示:
如果单击配置配置文件附近的箭头,则会打开包含配置配置文件的文件夹.
所以我的问题是:
Xcode 6中是否有任何方法可以选择Ad Hoc分发使用的配置文件?
谢谢!
我有一个UIView,并且我已添加了点击手势:
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
Run Code Online (Sandbox Code Playgroud)
我试图在testfile中以编程方式调用它.
sendActionForEvent
Run Code Online (Sandbox Code Playgroud)
我正在使用此功能,但它无法正常工作:
myView.sendActionForEvent(UIEvents.touchUpDown)
Run Code Online (Sandbox Code Playgroud)
它显示发送到实例的无法识别的选择器.
我怎么解决这个问题?
提前致谢
我在Interface Builder中创建了一个自定义UICollectionViewCell,将它绑定到类上,然后当我想使用并将字符串设置为字符串上的标签时,tha label的值为nil.
override func viewDidLoad() {
super.viewDidLoad()
// Register cell classes
self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
}
override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
var cell: LeftMenuCollectionViewCell
cell = collectionView.dequeueReusableCellWithReuseIdentifier("ls", forIndexPath: indexPath) as LeftMenuCollectionViewCell
println(cell.label) // <- this is nil, why??
cell.label.text = "asd"
return cell
}
Run Code Online (Sandbox Code Playgroud)
和子类细胞:
class LeftMenuCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
}
Run Code Online (Sandbox Code Playgroud) 在Xcode 6中,我有一个应用程序,我正在使用Core Data,但iOS 8 iPhone模拟器的应用程序支持中没有文件夹.我的文件和Core Data sqlite数据库存储在哪里?
我正在尝试实现viewWillTransitionToSizeiOS 8中引入的新方法(所有其他旋转方法已被弃用).我想知道现在的等价物didRotateFromInterfaceOrientation是什么,因为我们需要执行许多清理任务,我无法看到我们可以指定的块,UIViewControllerTransitionCoordinator以便在"转换"为新的时调用大小完成.谢谢.
我正在尝试从笔尖创建自定义表格视图单元格.我在这里指的是这篇文章.我面临两个问题.
我创建了一个.xib文件,其中拖动了一个UITableViewCell对象.我创建了一个子类,UITableViewCell并将其设置为单元格的类,将Cell设置为可重用的标识符.
import UIKit
class CustomOneCell: UITableViewCell {
@IBOutlet weak var middleLabel: UILabel!
@IBOutlet weak var leftLabel: UILabel!
@IBOutlet weak var rightLabel: UILabel!
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
Run Code Online (Sandbox Code Playgroud)
在UITableViewController中我有这个代码,
import UIKit …Run Code Online (Sandbox Code Playgroud) 我在课堂上UITextField按Ctrl键拖动.现在,我正在使用此代码@Outlet.swiftviewDidLoad
self.myTextField.keyboardType = UIKeyboardType.DecimalPad
Run Code Online (Sandbox Code Playgroud)
当我在模拟器上启动我的应用程序并单击UITextField我得到此日志
Can't find keyplane that supports type 8 for keyboard
iPhone-Portrait-DecimalPad;
using 2617181025_Portrait_iPhone-Simple-Pad_Default
Run Code Online (Sandbox Code Playgroud)
我没有崩溃或什么,但没有显示键盘.我也尝试设置它,Storyboard但它是一样的.
我也注意到,每当我点击任何 UITextField键盘时都不会显示(但是没有显示默认键盘的日志)
我正在使用Xcode-Beta 3任何人遇到这个问题?
ios8 ×10
ios ×9
swift ×5
xcode6 ×3
iphone ×2
objective-c ×2
xcode ×2
autorotate ×1
core-data ×1
keyboard ×1
launchimage ×1
uitableview ×1
xcasset ×1