我非常需要为我的应用做离线地图,因为它主要是为泰国制作的,因为泰国通常很难连接互联网.我现在正在使用OpenStreetMap我的MKTileOverlay但是在实现它以供离线使用时遇到问题.我找到了一个教给子类的教程MKTileOverlay.所以,在我ViewController的地图上我有:
- (void)viewWillAppear:(BOOL)animated {
CLLocationCoordinate2D coord = {.latitude = 15.8700320, .longitude = 100.9925410};
MKCoordinateSpan span = {.latitudeDelta = 3, .longitudeDelta = 3};
MKCoordinateRegion region = {coord, span};
[mapView setRegion:region];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Map";
NSString *template = @"http://tile.openstreetmap.org/{z}/{x}/{y}.png";
self.overlay = [[XXTileOverlay alloc] initWithURLTemplate:template];
self.overlay.canReplaceMapContent = YES;
[mapView addOverlay:self.overlay level:MKOverlayLevelAboveLabels];
}
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay {
return [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay];
}
Run Code Online (Sandbox Code Playgroud)
在我的子类中MKTileOverlay,我有:
- (NSURL *)URLForTilePath:(MKTileOverlayPath)path { …Run Code Online (Sandbox Code Playgroud) 在ConstraintLayout我们有新类型的参数creator:layout_constraintTop_creator或layout_constraintRight_creator
如何使用它?
我正在使用iOS 10 Swift 3整合FB Login.我已经完成了Facebook文档中的所有步骤.现在的问题是,在成功登录后,它不会返回任何值,也不会让用户返回应用程序.
注意:同样适用于Swift 2.
有没有办法Swift根据运行时iOS版本有条件地导入框架?
特别是,我有一个部署目标为的应用程序iOS 8.Apple Speech如果在运行时可用,我想在应用程序中使用新框架.我知道#available(iOS 10, *)代码部分的@available(iOS 10, *)指令,以及可用于整个类的指令.因此,我可以轻松避免执行任何使用Speech框架的代码.但是在包含使用Speech的类的文件中,我需要"import Speech"语句,并且这两个指令都不能在那里使用.我发现即使我@available(iOS 10, *)在整个班级都有指令,当我在iOS 9设备上运行我的应用程序时,它会在启动时被杀死
"dyld: Library not loaded: /System/Library/Frameworks/Speech.framework/Speech".
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了某些内容,或者是否只能在部署目标为10的应用中使用Speech框架?
我有一个.ipa具有arm64与armv它7片.如果我上同时支持的iDevice运行arm64和armv7哪个片将被运行时采摘?
我可以通过打印NSLog或某种方式来了解某个地方运行时已选择切片arm64吗?
在我的UIViewController我试图查询我的解析服务器,但我不断得到它的返回0,虽然我知道100%这个类确实有对象.有什么想法吗?
PFQuery *query = [PFQuery queryWithClassName:@"General"];
int i;
for (i = 0; i < [follows count]; i++) {
[query whereKey:@"Session" containedIn:follows];
}
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
// it never gets here...
NSLog(@"OBJECTS%@", objects);
if (!error) {
NSLog(@"Successfully retrieved %lu objects.", (unsigned long)objects.count);
for (PFObject *object in objects) {
NSLog(@"%@", object.objectId);
}
// [self gotoMain];
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
Run Code Online (Sandbox Code Playgroud)
它告诉我在控制台中成功检索0个对象没有错误.
有没有办法将所有不同的UTType 扩展类型获取为字符串?我专门需要它们来处理图像、音频和视频。
我遵循了这个答案,但它没有给我所有的扩展
var types = [String]()
let utiTypes = [kUTTypeImage, kUTTypeMovie, kUTTypeVideo, kUTTypeMP3, kUTTypeAudio, kUTTypeQuickTimeMovie, kUTTypeMPEG, kUTTypeMPEG2Video, kUTTypeMPEG2TransportStream, kUTTypeMPEG4, kUTTypeMPEG4Audio, kUTTypeAppleProtectedMPEG4Audio, kUTTypeAppleProtectedMPEG4Video, kUTTypeAVIMovie, kUTTypeAudioInterchangeFileFormat, kUTTypeWaveformAudio, kUTTypeMIDIAudio, kUTTypeLivePhoto, kUTTypeTIFF, kUTTypeGIF, kUTTypeQuickTimeImage, kUTTypeAppleICNS]
for type in utiTypes {
let str = String(type)
guard let utiStr = fileExtension(for: str) else { continue }
types.appent(utiStr)
}
dump(types)
Run Code Online (Sandbox Code Playgroud)
结果是
15 elements // there are really 21 types
- "jpeg"
- "png"
- "mov"
- "mpg"
- "m2v"
- "ts" …Run Code Online (Sandbox Code Playgroud) ios swift uidocumentpickerviewcontroller mobilecoreservices uttype
事情并不像在用户手机上存储登录数据的最佳做法那样清晰.有人建议应将数据userID = 123和loggedIn = true类型数据存储在NSUSerDefaults数据中.然而根据我的理解,根据这篇文章,https://www.andyibanez.com/nsuserdefaults-not-for-sensitive-data/可以很容易地操作这些数据.
所以问题是:当用户浏览各种屏幕时,持久登录数据的最佳方法是什么.需要被存储的唯一数据是userID或OAuth Token有关于这个用户的帐户状态的一些其他的自定义位一起.存储此数据的最安全方法是什么,以确保在从服务器提取数据时,有人不能简单地伪造成另一个用户?
问候,迈克尔
我一直在开发iOS应用程序并玩弄苹果CoreLocation和iBeacon技术.到目前为止,我使用了三个具有不同UUID的信标.一切都很好,直到我决定在我的应用程序中添加更多信标.只有那时我遇到了奇怪的问题.有人说,一个应用程序可以在后台监视多达20个信标区域 - 但在我的特定情况下,这个数字似乎是3.我尝试了不同的方法,没有任何效果.当我在他们的数组中改变信标时,结果就像我预期的那样 - 只有前三个信标区域被触发,didEnterRegion而didExitRegion应用程序处于后台的事件.当它在前景时没有应用.
请考虑一下:
对于每个自定义信标对象,我创建一个CLBeaconRegion类似的实例:
let beaconRegion = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: region.uuid)!, identifier: region.uuid)
beaconRegion.notifyOnEntry = true
beaconRegion.notifyOnExit = true
beaconRegion.notifyEntryStateOnDisplay = true
Run Code Online (Sandbox Code Playgroud)然后我将该实例传递给CLLocationManager的startMonitoringForRegion方法,如下所示:
locationManager.startMonitoringForRegion(beaconRegion)
当循环通过CLLocationManager的monitoredRegions方法响应时,我获得了我期望的所有信号区域regionState 2(外部)
最重要的是,我已经添加:
NSLocationAlwaysUsageDescription
到应用程序的Info.plist
locationManager.requestAlwaysAuthorization()
Run Code Online (Sandbox Code Playgroud)
到ViewController的viewDidLoad方法
不过,didEnterRegion和didExitRegion我在任何我开始监测前三灯塔地区的范围是只触发.
谢谢,
Piotr Czarnoleski