我正在尝试学习MapKit并将其添加MKPolyLine为覆盖。几个问题:
MKPolyLine和之间有什么区别MKPolyLineView。什么时候应该使用哪一个?
对于MKPolyLineinit方法,参数之一是?的泛型type(MKMapPoint)UnsafePointer。不太确定那是什么意思。查找各种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"。
怎么了
需要帮助将一些代码转换为Swift 4.开始获取错误并且不确定如何转换这段代码.我遇到的麻烦String和doubleValue.
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)
我将我的项目从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.如何在没有选择器的情况下实现刷新控制?
我有一个自定义类的对象数组。我班是人。所以我想检查arrPerson是否包含一个对象,那么它不应再次添加到数组中。
这是我的代码
for value in data {
if self.arrPerson.contains(where: {($0.id != value.id)}){
self.arrPerson.append(value)
}
}
Run Code Online (Sandbox Code Playgroud)
请告诉我如何检查自定义类的对象是否已添加,然后不应再次添加
是否可以实现Encodable和Decodable属性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类定义,我无法执行此操作
我想知道是否有任何方法可以打开或关闭iPhone wifi或以快速4的代码将设备切换到离线模式,或者我不知道苹果可能不允许该应用执行此类操作以在App Store中分发。这不重要,我只想知道是否有任何代码可以执行此操作(仅在Swift 4中)
我正在从图库中选择多个图像并将所有选定的图像放在一个数组中.我想在我的集合视图中显示这些图像.我有一个集合视图,在单元格中我创建了一个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) 我正在使用swift项目,它使用Xcode 9和swift 4.1.我创建了一个导航视图控制器,然后创建了其他视图控制器并附加了导航视图控制器.
所以我默认有页眉和页脚.所以我有两个问题,
现在我想要更改除白色之外的页脚颜色,但是当我为其编写任何代码时,它会在页脚后面缩小,我看不到任何没有白色的颜色.我如何为页脚添加任何颜色?
如果我无法为页脚赋予颜色,那么我想使用波纹管代码隐藏该页脚
override func viewWillAppear(animated: Bool)
{
self.navigationController?.navigationBarHidden = true
}
Run Code Online (Sandbox Code Playgroud)但是通过这种颜色,我只能隐藏页眉而不是页脚.所以我如何使用代码隐藏页脚,所以我创建了自定义页脚我想要的.
如何在swift 4.1中解决上述问题?
目前,当我将我的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) 我的代码如下
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'运算符
有什么可以替代我的代码。我不是一个非常专业的编码员。因此,任何帮助都会很棒。
swift4 ×10
ios ×8
swift ×6
arrays ×1
decodable ×1
footer ×1
ios11 ×1
iphone ×1
mapkit ×1
mkpolyline ×1
offline-mode ×1
promisekit ×1
wifi ×1
xcode ×1
xcode9 ×1