小编Mas*_*eni的帖子

为什么我不能在Swift中使用let in protocol?

我对Swift中有关var的使用和关键字{get set}的协议有疑问.

来自Apple文档:

如果协议要求属性可获取和可设置,则不能通过常量存储属性或只读计算属性来满足该属性要求.如果协议只要求属性可以获取,那么任何类型的属性都可以满足要求,如果这对您自己的代码有用,则该属性也可以设置.

属性要求始终声明为变量属性,前缀为var关键字.Gettable和settable属性通过在类型声明后写入{get set}来指示,并且通过编写{get}来指示gettable属性.

我无法理解为什么我不能使用let.只有get的协议中的var不只是一个let

像这样的东西:

protocol someProtocol 
{
   var someProperty: String { get }
}
Run Code Online (Sandbox Code Playgroud)

它不会只是:

protocol someProtocol 
{
   let someProperty: String
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

protocols getter-setter ios swift swift-protocols

59
推荐指数
2
解决办法
2万
查看次数

使用autolayout将屏幕分为1/3和2/3视图

有没有办法按百分比划分屏幕(不等于百分比)我需要将屏幕分成两部分1/3和2/3.我知道如何分成相等的部分,但无法弄清楚如何分裂为不相等.

谢谢

ios swift ios-autolayout

33
推荐指数
3
解决办法
2万
查看次数

Alamofire会自动存储cookie吗?

我是Alamofire的新手所以如果这是一个noob问题我很抱歉:这个框架会自动存储cookie吗?

这是因为我有这样一个简单的请求:

Alamofire.request(.POST, loginURL, parameters: ["fb_id": fbId, "fb_access_token": fbToken])
         .responseJSON { response in
             //print(response.request)  // original URL request                          
             //print(response.response) // URL response
             //print(response.data)     // server data
             //print(response.result)   // result of response serialization

             if let JSON = response.result.value {
                 print("loginURL - JSON: \(JSON)")
             }
         }
Run Code Online (Sandbox Code Playgroud)

这个请求响应与cookie会话,我需要做出其他安全原因的请求; 奇怪的是,像魔术一样,我已经可以在第一次POST之后执行其他请求,而无需手动读取cookie并存储它.我确定其他请求需要cookie会话,因为他们在postman上失败,例如但不在这里.

这只是一个功能?因为我在官方的GitHub页面上也找不到任何东西.

cookies post ios swift alamofire

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

检测calloutAccessoryControlTapped只点击rightCalloutAccessoryView

calloutAccessoryControlTapped也叫我上标注视图只需轻按和这种行为是正确的.但是,我如何检测用户是否已经点击了正确的附件视图(在我的情况下是一个详细的公开按钮)而不仅仅是在视图中?

我添加了一个简单的检查,但它不起作用.

import UIKit
import MapKit

extension MapVC: MKMapViewDelegate, CLLocationManagerDelegate
{    
    func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl)
    {
        if control == view.rightCalloutAccessoryView
        {
            ... // enter here even if I tapped on the view annotation and not on button
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

mapkit uicontrol ios swift

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

如何在Swift中正确声明变量?

我发现在Swift中声明变量的这些不同方法非常有趣:

// METHOD 1
var dogName: String = "Charlie"

// METHOD 2
var dogName: String {
    return "Charlie"
}

// METHOD 3
let dogName = {
    return "Charlie"
}

// METHOD 4
var dogName: String = {
    return "Charlie"
}()
Run Code Online (Sandbox Code Playgroud)

显然方法3声明了一个让我们知道差异; 但为什么Swift允许方法4?

这四种方法有什么区别?

我在方法2和方法4之间特别混淆.另外,为什么方法3与方法4相比失去了最后的括号?

var let variable-declaration swift swift3

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

JSON 写入中的顶级类型无效

我正在尝试创建一个简单的 JSON 对象,但仍然出现错误,我知道我的代码有什么问题:

NSString *vCard = [BRContacts getContacts]; // this is just a string, could be nil
NSDictionary *JSONdic = nil;
if (vCard)
{
    JSONdic = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"status",vCard,@"data", nil];
}
else
{
    JSONdic = [NSDictionary dictionaryWithObjectsAndKeys:@"0",@"status",@"vCard is empty",@"error", nil];
}
NSError *error = nil;
NSData *JSONData = [NSJSONSerialization dataWithJSONObject:JSONdic options:NSJSONWritingPrettyPrinted error:&error];
return [GCDWebServerDataResponse responseWithJSONObject:JSONdata];
Run Code Online (Sandbox Code Playgroud)

例外是

JSON 写入中的顶级类型无效

我也检查过JSONdic,在每种情况下都不是零。有什么建议?

json objective-c ios nsjsonserialization gcdwebserver

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

WKInterfaceTable 和 setNumberOfRows 崩溃“在展开可选值时意外发现 nil”

我正在使用 WatchKit,我有一个简单的界面,只有一个表,但我只用几行代码就得到了一个错误,也许我忘记了一些非常基本的东西。

我的界面:

表内的行具有标识符:

和自定义类:

控制器由以下代码实现:

import WatchKit
import Foundation

class ActiveListController: WKInterfaceController
{
    @IBOutlet weak var tableView: WKInterfaceTable!

    override func awakeWithContext(context: AnyObject?)
    {
        super.awakeWithContext(context)

        loadData()
    }

    override func willActivate()
    {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()
    }

    override func didDeactivate()
    {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }

    func loadData()
    {
        tableView.setNumberOfRows(10, withRowType: "ItemRow") // GET ERROR

        for index in …
Run Code Online (Sandbox Code Playgroud)

ios swift watchkit wkinterfacetable wkinterfacecontroller

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

无法在表视图控制器中为单元格设置自定义类

我真的快疯了:我不能简单地为 UITableViewCell 设置我的自定义类,我真的不知道为什么。

我的项目

在此处输入图片说明

在我的Storyboard 中,我有一个表视图控制器设置为使用ManageListsTVC.swift

我想使用带有动态原型的自定义单元格,因此我创建了一个自定义类ListTVCell

import UIKit

class ListTVCell: UITableViewCell
{

    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)

所以,清理,构建,进入 IB,选择我的表视图控制器,选择单元格和...

在此处输入图片说明

我看不到我的自定义课程!为什么?真的,我已经在这个愚蠢的问题上浪费了很多时间,我不知道出了什么问题。

我已经尝试过的

  • ~/Library/Developer/Xcode/DerivedData 中的空缓存
  • 重启Xcode
  • 清洁工程
  • 检查 ListTVCell.swift 是否出现在编译源中

我正在使用 Xcode 6.3.1。

interface-builder storyboard uitableview ios swift

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

在iOS中将界面从设备缩放到另一个的问题

这个问题真让人沮丧,让我发疯.

我已经阅读了有关AutoLayout等的所有内容,但它始终在发生.我的界面有一个视图,图像视图为背景,顶部有一个较小的子视图(对应于我图像中的一个字段).我已经尝试了所有的东西,但看起来子视图在切换设备时不会与我的图像相应地缩放.顺便说一句,IB预览并没有显示我在运行iOS模拟器时真正得到的东西,这是正常的吗?为什么?我做错了什么?我不知道还有什么可以尝试的!

http://i58.tinypic.com/34xqtc6.png

编辑:我无法发布图像:(

ios autolayout swift adaptive-ui

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

如何使用 NSPredicate 获取今天的 NSDate 对象?

我的核心数据模型和涉及日期的获取请求遇到了问题。

我在具有 NSDate 属性的实体中有一些对象;我需要用今天的日期提取对象,但我总是从这段代码中得到零:

public func getObjectsOfToday() -> Array<myObject>?
{
    let entityDescription = NSEntityDescription.entityForName("Objects", inManagedObjectContext: DataAccess.sharedInstance.managedObjectContext)

    let request = NSFetchRequest()
    request.entity = entityDescription
    request.returnsObjectsAsFaults = false

    let today = NSDate()
    request.predicate = NSPredicate(format: "(dateStart => %@) AND (dateStart <= %@)", today, today)

    var objects: [AnyObject]?
    do
    {
        objects = try DataAccess.sharedInstance.managedObjectContext.executeFetchRequest(request)
    }
    catch let error as NSError
    {
        print(error)
        objects = nil
    }

    return objects as? Array<Objects>
}
Run Code Online (Sandbox Code Playgroud)

我认为是 NSPredicate 的问题,因为它也考虑小时、分钟和秒。如果我今天打印是这样的:

今日印刷说明:2016-02-28 22:02:01 +0000

我想获取具有相同日期的对象,而忽略 hours、minutes 和 …

core-data nsdate nspredicate ios swift

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

设置AVPlayer视频帧圆角

有人知道如何使用 AVPlayer 设置视频帧的圆角吗?我正在尝试这样做:

- (void)loadVideoWithPlayer:(AVPlayer*)playerVideo
{    
    dispatch_async(dispatch_get_main_queue(), ^{

        AVPlayerLayer *avLayer = [AVPlayerLayer playerLayerWithPlayer: playerVideo];
        [avLayer setCornerRadius:20];
        [avLayer setMasksToBounds:YES];

        [self.playerViewController setPlayer:playerVideo];

        [self insertSubview:self.playerViewController.view belowSubview:self.interactView];

        [self.playerViewController.player play];
    });
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用。我无法设置圆角,AVPlayer.playerViewController.view因为视频帧可能不同。

cornerradius avplayer avplayerlayer

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