标签: swift4

MKPolyLine Swift 4

我正在尝试学习MapKit并将其添加MKPolyLine为覆盖。几个问题:

  1. MKPolyLine和之间有什么区别MKPolyLineView。什么时候应该使用哪一个?

  2. 对于MKPolyLineinit方法,参数之一是?的泛型type(MKMapPointUnsafePointer。不太确定那是什么意思。查找各种SO问题,似乎我们应该将CLLocationCoordinate2Dstruct 的内存地址作为参数传递,但这对我不起作用。

    let testline = MKPolyline()
    let coords1 = CLLocationCoordinate2D(latitude: 52.167894, longitude: 17.077399)
    let coords2 = CLLocationCoordinate2D(latitude: 52.168776, longitude: 17.081326)
    let coords3 = CLLocationCoordinate2D(latitude: 52.167921, longitude: 17.083730)
    let testcoords:[CLLocationCoordinate2D] = [coords1,coords2,coords3]
    
    
    let line = MKPolyline.init(points: &testcoords, count: testcoords.count)
    
    mapView.add(testline)
    
    Run Code Online (Sandbox Code Playgroud)

我不断收到"& is not allowed passing array value as 'UnsafePointer<MKMapPoint>" argument"

怎么了

mapkit mkpolyline swift swift4

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

Swift 4转换分段故障:11

需要帮助将一些代码转换为Swift 4.开始获取错误并且不确定如何转换这段代码.我遇到的麻烦StringdoubleValue.

let distanceInMeters: Double = userLocation.distance(from: businessLocation)
let distanceInMiles: Double = ((distanceInMeters.description as? String).doubleValue * 0.00062137)
let distanceLabelText = "\(distanceInMiles.string(2)) miles away"
Run Code Online (Sandbox Code Playgroud)

分段故障11文件

ios swift swift4

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

如何避免在带有Swift 4的iOS 11中使用带有刷新控件的@objc?

我将我的项目从Swift 3升级到Swift 4,在迁移过程中,它在我的代码中插入了一堆"@objc"注释.我希望摆脱它们以避免生成任何Objective-C入口点.其中一个我无法弄清楚如何摆脱,使用刷新控件.这是违规代码:

let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(MyController.handleRefresh(refreshControl:)), for: .valueChanged)
self.table.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)

问题是它似乎使用了#selector.如何在没有选择器的情况下实现刷新控制?

ios uirefreshcontrol swift4 ios11

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

如何检查数组中是否已存在自定义对象?

我有一个自定义类的对象数组。我班是人。所以我想检查arrPerson是否包含一个对象,那么它不应再次添加到数组中。

这是我的代码

for value in data {

    if self.arrPerson.contains(where: {($0.id != value.id)}){
        self.arrPerson.append(value)
    }
}
Run Code Online (Sandbox Code Playgroud)

请告诉我如何检查自定义类的对象是否已添加,然后不应再次添加

arrays xcode ios swift swift4

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

为UIColor实现Codable

是否可以实现EncodableDecodable属性UIColor

当我尝试添加Decodable扩展时,我收到错误

extension UIColor : Decodable {
    public required init(from decoder: Decoder) throws {
        self.init(red: 1, green: 1, blue: 1, alpha: 1)
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:ColorStuff.playground:98:21:错误:初始化程序要求'init(from :)'只能通过required初始化程序在非最终类'UIColor'的定义中满足公共必需的init(来自解码器:解码器)抛出{

我错过了一些明显的东西吗?

我对Encodable扩展没有任何问题- 这似乎是一个Decodable问题.

错误消息告诉我,由于无法访问UIColor类定义,我无法执行此操作

ios swift swift4 decodable

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

Swift 4中的代码是否可以关闭wifi或将iPhone切换为离线模式?

我想知道是否有任何方法可以打开或关闭iPhone wifi或以快速4的代码将设备切换到离线模式,或者我不知道苹果可能不允许该应用执行此类操作以在App Store中分发。这不重要,我只想知道是否有任何代码可以执行此操作(仅在Swift 4中)

iphone offline-mode wifi ios swift4

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

在Collection View Cell中显示图像数组

我正在从图库中选择多个图像并将所有选定的图像放在一个数组中.我想在我的集合视图中显示这些图像.我有一个集合视图,在单元格中我创建了一个imageView.现在我试图将我的图像数组传递给单元格中的图像视图.但是当我点击完成按钮时,它只在集合视图单元格中显示一个图像.我已经使用断点检查我的循环循环工作正常,但它只显示一个图像.如何显示阵列中的所有图像?我的代码是这样的:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 1

}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = uploadDocCollectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! UploadDocsImagesCollectionViewCell

    for i in 0..<imagesArray.count{
        cell.imageView.image = imagesArray[i]
    }

    return cell
}
Run Code Online (Sandbox Code Playgroud)

ios swift4

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

如何在swift项目中隐藏所有视图控制器的页脚附加我的导航控制器?

我正在使用swift项目,它使用Xcode 9和swift 4.1.我创建了一个导航视图控制器,然后创建了其他视图控制器并附加了导航视图控制器.

所以我默认有页眉和页脚.所以我有两个问题,

  1. 现在我想要更改除白色之外的页脚颜色,但是当我为其编写任何代码时,它会在页脚后面缩小,我看不到任何没有白色的颜色.我如何为页脚添加任何颜色?

  2. 如果我无法为页脚赋予颜色,那么我想使用波纹管代码隐藏该页脚

    override func viewWillAppear(animated: Bool)
    {
       self.navigationController?.navigationBarHidden = true
    }
    
    Run Code Online (Sandbox Code Playgroud)

但是通过这种颜色,我只能隐藏页眉而不是页脚.所以我如何使用代码隐藏页脚,所以我创建了自定义页脚我想要的.

如何在swift 4.1中解决上述问题?

footer uinavigationcontroller ios swift4 xcode9

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

无法将类型'Promise &lt;[NSDictionary]&gt;'的值转换为预期的参数类型'Guarantee &lt;Void&gt;'

目前,当我将我的PromiseKit从Swift 2更新到Swift 4时遇到了问题。我的许多Promise都将这个问题从NSDictionary退还给Guarantee Void。我不明白为什么会出现这个问题。如果有人可以向我解释,将不胜感激!

func getPlayerGameLog(sportName: String) -> Promise<NSArray> {
    let team = (self as? PlayerWithPositionAndGame)?.team
    let position = (self as? PlayerWithPositionAndGame)?.position

    if sportName == "mlb" {
        return when(Data.mlbPlayerGameLogs[id].get(), Data.sportsTeams[sportName].get()).then { (result, teams) -> NSArray in
            if result.count == 0 {
                return []
            } else {
                // Omitted Code
                return gameStats
            }
        }
    } else if sportName == "nfl" {
        return when(Data.nflPlayerGameLogs[id].get(), Data.sportsTeams[sportName].get()).then { (result, teams) -> NSArray in
            if result.count == 0 {
                return []
            } else {
                // …
Run Code Online (Sandbox Code Playgroud)

swift promisekit swift4

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

Swift 4-'substring(to :)'已过时-我的代码的替代方法

我的代码如下

   var theReview = addReview.text
    let len2 = addReview.text.utf16.count

    if len2 > 3000 {

        theReview = theReview?.substring(to: (theReview?.index((theReview?.startIndex)!, offsetBy: 3000))!)

    }
Run Code Online (Sandbox Code Playgroud)

我的目标是获取文本的前3000个字符(如果长度超过3000个字符)。

但是,我得到以下警告:

不推荐使用'substring(to :)':请使用字符串切片下标以及'partial range upto'运算符

有什么可以替代我的代码。我不是一个非常专业的编码员。因此,任何帮助都会很棒。

ios swift swift4

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