如果它等于给定的字符串,是否没有简单的方法从数组中删除特定元素?解决方法是找到要删除的数组元素的索引,然后removeAtIndex
创建一个新数组,在该数组中追加所有不等于给定字符串的元素.但是没有更快的方法吗?
我的输入是纬度和经度.我需要使用reverseGeocodeLocation
swift 的功能,给我一个本地的输出.我尝试使用的代码是
println(geopoint.longitude)
println(geopoint.latitude)
var manager : CLLocationManager!
var longitude :CLLocationDegrees = geopoint.longitude
var latitude :CLLocationDegrees = geopoint.latitude
var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
println(location)
CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error) -> Void in
println(manager.location)
if error != nil {
println("Reverse geocoder failed with error" + error.localizedDescription)
return
}
if placemarks.count > 0 {
let pm = placemarks[0] as CLPlacemark
println(pm.locality)
}
else {
println("Problem with the data received from geocoder")
}
Run Code Online (Sandbox Code Playgroud)
在我得到的日志中
//-122.0312186
//37.33233141
//C.CLLocationCoordinate2D
//fatal error: unexpectedly found …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用UITableView.keyboardDismissMode = UIScrollViewKeyboardDismissMode.Interactive
,以便能够上下拖动我的键盘.但是我找不到任何方法来跟踪键盘框架以更新我的tableView框架和消息传递视图.我只是想复制标准的iMessage行为.鉴于名称,我原本认为这UIKeyboardWillChangeFrameNotification
对于跟踪键盘框架的变化是完美的,但它只会在手势结束并且键盘向上或向下动画时通知.
如何在Swift中设置我的UITableView的分隔符样式?我想摆脱分隔符,以便在我的表视图中的单元格之间没有灰线.任何建议都将非常感谢.我已经尝试过了.
我在Objective-C中找到了这个方法
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]
Run Code Online (Sandbox Code Playgroud)
我尽力将其翻译成快速的
self.tableView.setSeparatorStyle = UITableViewCellSeparatorStyle.None
Run Code Online (Sandbox Code Playgroud)
但这会出现错误
'(UITableView, numberOfRowsInSection: Int) -> Int' does not have a member named 'setSeparatorStyle'
Run Code Online (Sandbox Code Playgroud)
在苹果文档中,它在objective-C中给出了这些声明
typedef enum : NSInteger {
UITableViewCellSeparatorStyleNone ,
UITableViewCellSeparatorStyleSingleLine ,
UITableViewCellSeparatorStyleSingleLineEtched
} UITableViewCellSeparatorStyle;
Run Code Online (Sandbox Code Playgroud)
所以我再次尝试将其转换为Swift使用
override func tableView(tableView: UITableView, setSeparatorStyle style: NSInteger) -> NSInteger {
return UITableViewCellSeparatorStyleNone
}
Run Code Online (Sandbox Code Playgroud)
但这只会引发更多错误,"使用未解析的标识符'UITableViewCellSeparatorStyleNone"
我正在尝试从mongodb沙箱选项升级到共享群集,并且为了保留我当前的数据,我必须执行mongodump和mongorestore将旧数据迁移到新数据库.
这就是我在命令行中输入的内容.
mongorestore -h url:host -d heroku_zc -u heroku_zc -p 470grupv030prq5uj0fm mongo-dump-dir/heroku_9r
Run Code Online (Sandbox Code Playgroud)
它似乎一切正常并恢复所有数据条目,但在上传文件块时它会暂停.有时5%的ay通过有时20%的方式通过有时50%.
正如我所说,当我查看新数据库时,所有行都正确,并且只丢失了实际的数据文件.
这是终端中发生的事情,它不会发出错误,只是停止.
2017-02-09T15:45:20.509+0100 [#.......................] heroku_z25kbwmc.fs.chunks 15.8 MB/299.6 MB (5.3%)
2017-02-09T15:45:23.509+0100 [#.......................] heroku_z25kbwmc.fs.chunks 15.8 MB/299.6 MB (5.3%)
2017-02-09T15:45:26.510+0100 [#.......................] heroku_z25kbwmc.fs.chunks 15.8 MB/299.6 MB (5.3%)
Run Code Online (Sandbox Code Playgroud)
这两个db都是从heroku创建的,作为我的解析服务器的插件.
编辑:我也不知道这是不是一个问题,本地系统数据库说2.03GB.我不明白这是怎么回事,因为总数据库大小只有500mb
我正在尝试为我的mapView标注气泡自定义MKAnnotationView.我可以在创建注释时设置注释标题,也可以自定义MKAnnotationView以添加标签或图像等(在viewForAnnotation
委托中),但是如何更改在viewForAnnotation
委托中创建的标签,以便它的标题是每个引脚有什么不同?
我的另一个问题是,如果我在viewDidLoad方法中创建它时没有为注释添加标题或副标题,但我仍然尝试通过离开创建一个self.map.addAnnotation(annotation)
,当我运行应用程序并点击引脚时没有标注显示气泡.
最后,我希望有完全定制的标注气泡,每个针脚都有单独的标签.所以我真正需要知道的是在创建注释时如何访问viewForAnnotation委托以更改每个引脚的属性.
override func viewDidLoad() {
super.viewDidLoad()
var countries: [String] = ["Germany","Germany","Poland","Denmark"]
var practiceRoute: [CLLocationCoordinate2D] = [CLLocationCoordinate2DMake(50, 10),CLLocationCoordinate2DMake(52, 9),CLLocationCoordinate2DMake(53, 20),CLLocationCoordinate2DMake(56, 14)]
for vari=0; i<practiceRoute.count; i++ {
var annotation = MKPointAnnotation
annotation.title = countries[i]
annotation.coordinate = practiceRoute[i]
self.map.addAnnotation(annotation)
}
}
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
if annotation is MKUserLocation {
return nil
}
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
if(pinView==nil){
pinView=MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView!.canShowCallout = …
Run Code Online (Sandbox Code Playgroud) 有谁知道Apple的APN推送通知服务中的漏洞在哪里?
我们可以确保将我们的通知安全地发送给Apple,因此我们只需要知道它们是否可以从这一点被截获?
动机:我们已经构建了一个iOS消息传递应用程序,我们将其作为100%安全的解决方案,其中一些功能在安全性之前从未被利用过.
我在尝试在 iOS 上安装 Facebook SDK 以进行应用程序事件分析时遇到了一场噩梦。facebook 的文档很糟糕,而且不一致,我找不到任何有效的最新安装文档。我想要做的就是安装 SDK,以便我可以跟踪应用程序安装和应用程序打开事件。我使用cocoapods进行安装
pod 'Facebook-iOS-SDK'
Run Code Online (Sandbox Code Playgroud)
在我的应用程序委托 didFinishLaunchingWithOptions 中,我有以下代码
import FBSDKCoreKit
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
Settings.isAutoLogAppEventsEnabled = true
Settings.isAdvertiserIDCollectionEnabled = true
Settings.loggingBehaviors = [LoggingBehavior.appEvents,LoggingBehavior.networkRequests]
return true
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
在我的 info.plist 中,根据文档,我有以下内容:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb396923698487528</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>396923698487528</string>
<key>FacebookDisplayName</key>
<string>Where4Test</string>
Run Code Online (Sandbox Code Playgroud)
从日志中可以看出,分析事件已成功发送并返回至 facebook api。但在事件管理器https://www.facebook.com/events_manager2中没有显示任何事件,它说我还没有安装 SDK。
我已经尝试了一百万种不同的事情,但就是无法让事件在 Facebook 上注册。请有人提供最新的安装说明或看看我做错了什么!
我遇到了问题UIImagePickerController
,我已启用编辑,但发生的情况是当用户裁剪图像时,方形裁剪显示用户将要裁剪的内容与实际裁剪的内容之间存在偏移量。它只适用于大约 20 像素,但现在是一个大问题。我提供了两个演示该问题的屏幕截图。在第一个中,裁剪方块似乎延伸到图像上方,但是当选择图像时,图像的顶部设置正确(图像只是屏幕截图,因此图像的顶部是状态栏的顶部)。在第二个屏幕截图中,如果您尝试将裁剪放在照片的最底部,它会弹回到这个位置,因此用户认为图像的底部不包括在内,而事实上,当选择它时,它是不包括在内的。有点头疼。似乎在模拟器中与在设备上执行相同的操作。有人知道为什么会这样吗?
我需要在数组中找到最常见的(模态)元素.
我能想到的最简单的方法是为每个唯一元素设置变量,并为每个元素分配一个计数变量,每次在一个贯穿数组的for循环中记录它时,它都会增加.
不幸的是,数组的大小是未知的并且将非常大,因此这种方法是无用的.
我在Objective-C中遇到了一个类似的问题,它使用NSCountedSet方法对数组元素进行排名.不幸的是,我对编程很新,只能将第一行翻译成Swift.
建议的方法如下:
var yourArray: NSArray! // My swift translation
NSCountedSet *set = [[NSCountedSet alloc] initWithArray:yourArray];
NSMutableDictionary *dict=[NSMutableDictionary new];
for (id obj in set) {
[dict setObject:[NSNumber numberWithInteger:[set countForObject:obj]]
forKey:obj]; //key is date
}
NSLog(@"Dict : %@", dict);
NSMutableArray *top3=[[NSMutableArray alloc]initWithCapacity:3];
//which dict obj is = max
if (dict.count>=3) {
while (top3.count<3) {
NSInteger max = [[[dict allValues] valueForKeyPath:@"@max.intValue"] intValue];
for (id obj in set) {
if (max == [dict[obj] integerValue]) {
NSLog(@"--> %@",obj);
[top3 addObject:obj];
[dict removeObjectForKey:obj]; …
Run Code Online (Sandbox Code Playgroud) 我在Objective-C中看到了这个问题,但我不知道如何转换为swift.
我的应用程序从Facebook接收用户的公共信息,我需要将语言环境转换为国家/地区名称.
FBRequestConnection.startForMeWithCompletionHandler({
connection, result, error in
user["locale"] = result["locale"]
user["email"] = result["email"]
user.save()
println(result.locale)
})
Run Code Online (Sandbox Code Playgroud)
例如,对于法国用户,代码将"Optional(fr_FR)"发送到日志.但是我需要它才能发送国家名称.根据localeplanet.com,显示名称"fr_FR"是"French(France)".因此在日志中我想要的只是"法国".
ios ×9
swift ×7
arrays ×2
facebook ×2
uitableview ×2
elements ×1
heroku ×1
iphone ×1
locale ×1
mkannotation ×1
mkmapview ×1
mongodb ×1
mongodump ×1
mongorestore ×1
nscountedset ×1
nslocale ×1
objective-c ×1
security ×1
uiimage ×1
uikeyboard ×1