我创建了下面的函数与多个observable的链接,但无论我做什么它似乎没有调用completed?它只返回以下内容:
(facebookSignInAndFetchData()) -> subscribed
(facebookSignInAndFetchData()) -> Event next(())
Run Code Online (Sandbox Code Playgroud)
即使我debug单独观察他们都会回归completed
这是我的链接功能
func facebookSignInAndFetchData() {
observerFacebook.flatMap { (provider: FacebookProvider) in
return provider.login()
}.flatMap { token in
return self.loginViewModel.rx_authenticate(token: token)
}.flatMap {
return self.loginViewModel.fetchProfileData()
}.debug().subscribe(onError: { error in
//Guard unknown ErrorType
guard let err = error as? AuthError else {
//Unknown error message
self.alertHelper.presentAlert(L10n.unknown)
return
}
//error message handling
switch err {
case .notLoggedIn:
print("not logged in")
break
default:
self.alertHelper.presentAlert(err.description)
}
}, onCompleted: {
self.goToInitialController()
}).addDisposableTo(self.disposeBag)
}
Run Code Online (Sandbox Code Playgroud)
rx_authenticate …
我正在尝试将其转换self.assets NSArray为NSMutableArray并将其添加到picker.selectedAssets其中NSMutableArray.这段代码在swift中会如何?
Objective-C代码
picker.selectedAssets = [NSMutableArray arrayWithArray:self.assets];
Run Code Online (Sandbox Code Playgroud) 我一直在努力在swift中创建一个facebook登录/注册功能.我一直在寻找一个教程,但一直找不到任何东西.所以我一直在尝试自己做.它似乎工作,但为什么它不保存我的facebookName,性别和图像在数据库中?它将它保存在模拟器中但不是在我使用ios 8设备时?
我收到此日志消息"用户注册并通过Facebook登录!",并且新用户被添加到解析类,但不是名称,图像和性别......
@IBAction func login(sender: UIButton!) {
var permissionArray = ["user_about_me", "user_relationships", "user_birthday", "user_location"]
PFFacebookUtils.initializeFacebook()
PFFacebookUtils.logInWithPermissions(permissionArray, block: { (user: PFUser!, error: NSError!) in
println(user)
if user == nil {
println(error.localizedDescription)
} else {
if user.isNew {
var userQuery = PFUser.query()
userQuery.getObjectInBackgroundWithId(PFUser.currentUser().objectId) {
(userObject: PFObject!, error: NSError!) -> Void in
var fbRequest = FBRequest.requestForMe()
fbRequest.startWithCompletionHandler { (connection: FBRequestConnection!, result:AnyObject!, error: NSError!) in
if error == nil {
//FACEBOOK DATA IN DICTIONARY
var userData = result as NSDictionary
var faceBookId = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的collectionViewController中的swift设置最小行间距,但我似乎无法找到我需要使用的方法.我需要这个以编程方式,因为我需要根据selectedSegmentedIndex动态更改它.如何以编程方式更改最小行间距?
我试图添加UICollectionViewFlowLayout,但不能,因为它是一个UICollectionViewController.
我想我需要使用类似的东西.
collectionView:layout:minimumLineSpacingForSectionAtIndex:
Run Code Online (Sandbox Code Playgroud) 我是autolayout的新手,我有点不知道如何将这4个图像集中在所有不同的设备中,就像它在图像上看起来一样.我试图应用自动配置的约束,但它将具有该距离,并且不适合所有设备.所以我的问题是我需要在所有不同的图像上应用哪些约束才能使所有图像以相同的距离居中?
这是我在storyBoard中的单元格的样子:

图像1上约束选项的图像:

模拟器中的图像:

///我的尝试////
在这里你可以看到我添加的约束和结果?

结果:

我正在尝试使用if语句检查是否存在url图像.但是,当尝试通过错误的图像url测试它时,它会继续返回:
致命错误:在展开Optional值时意外发现nil.
码:
var httpUrl = subJson["image_url"].stringValue
let url = NSURL(string: httpUrl)
let data = NSData(contentsOfURL: url!)
if UIImage(data: data!) != nil {
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在UIImageView上使用CALayer添加虚线边框.我找到了一个方法,但是在swift工作,我怎么能把它转换成swift?o有另一个带有边框的imageView,这将是使用CALayer的最佳解决方案,所以它们看起来相似吗?我怎样才能获得这个
obj-c代码快速?
- (CAShapeLayer *) addDashedBorderWithColor: (CGColorRef) color {
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
CGSize frameSize = self.size;
CGRect shapeRect = CGRectMake(0.0f, 0.0f, frameSize.width, frameSize.height);
[shapeLayer setBounds:shapeRect];
[shapeLayer setPosition:CGPointMake( frameSize.width/2,frameSize.height/2)];
[shapeLayer setFillColor:[[UIColor clearColor] CGColor]];
[shapeLayer setStrokeColor:color];
[shapeLayer setLineWidth:5.0f];
[shapeLayer setLineJoin:kCALineJoinRound];
[shapeLayer setLineDashPattern:
[NSArray arrayWithObjects:[NSNumber numberWithInt:10],
[NSNumber numberWithInt:5],
nil]];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:shapeRect cornerRadius:15.0];
[shapeLayer setPath:path.CGPath];
return shapeLayer;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用UISearchController创建搜索功能.但是,我似乎无法使其与我的团队对象一起工作.我首先创建了一个包含id,name和shortname的Team Object.然后我从一个url中检索teamData,并将Team Objects添加到一个填充到tableView中的数组中.这个tableView包含一个searchController,它假设过滤数据,但没有任何反应.
阵列
var teamArray = Array<Team>()
var filteredTableData = [String]()
Run Code Online (Sandbox Code Playgroud)
GetTeams功能
func getTeams(url: String) {
isApiCalling = true
request(.GET, url, parameters: nil)
.response { (request, response, data, error) in
if error == nil {
let data: AnyObject = data!
let jsonArray = JSON(data: data as! NSData)
for (key: String, subJson: JSON) in jsonArray {
// Create an object and parse your JSON one by one to append it to your array
var newTeamObject = Team(id: subJson["id"].intValue, name: subJson["name"].stringValue, …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个函数,它假设处理具有位置的权限,因此如果应用程序没有位置权限,它将关闭.但是,当您按下打开设置并在状态栏中按"返回应用程序"时,该determeinePermission方法不会再次执行.我试过把它添加到viewDidLoad,viewDidAppear和viewWillAppear.我能做什么?
func determinePermission() {
switch CLLocationManager.authorizationStatus() {
case .Authorized:
if CLLocationManager.locationServicesEnabled() {
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
manager.startUpdatingLocation()
}
case .NotDetermined:
manager.requestWhenInUseAuthorization()
case .AuthorizedWhenInUse, .Restricted, .Denied:
let alertController = UIAlertController(
title: "Background Location Access Disabled",
message: "In order to be notified about adorable kittens near you, please open this app's settings and set location access to 'Always'.",
preferredStyle: .Alert)
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in
exit(0)
} …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个自定义的callOutView,它似乎工作得很好.但是我在自定义callOut视图上处理点击时遇到问题.我想在选中时推送到特定的viewController.我怎样才能实现这一目标?
下面我添加了我的FBSingleClusterView,这是自定义的MKAnnotationView和bubbleView自定义的callOutView.在我的旁边有一个带有mapView的viewController.
FBSingleClusterView变量
private var hitOutside:Bool = true
var preventDeselection:Bool {
return !hitOutside
}
Run Code Online (Sandbox Code Playgroud)
FBSingleClusterView方法
override func setSelected(selected: Bool, animated: Bool) {
let calloutViewAdded = bubbleView?.superview != nil
if (selected || !selected && hitOutside) {
super.setSelected(selected, animated: animated)
}
self.superview?.bringSubviewToFront(self)
if (bubbleView == nil) {
bubbleView = BubbleView()
}
if (self.selected && !calloutViewAdded) {
bubbleView?.clipsToBounds = true
bubbleView?.layer.masksToBounds = true
self.addSubview(bubbleView!)
let discView = UIImageView()
discView.contentMode = UIViewContentMode.Center
discView.image = UIImage()
discView.image = UIImage(named: "Disclosure")
bubbleView?.contentView.addSubview(discView) …Run Code Online (Sandbox Code Playgroud) swift ×10
ios ×8
iphone ×4
objective-c ×3
autolayout ×1
facebook ×1
mkmapview ×1
permissions ×1
rx-cocoa ×1
rx-swift ×1
uiimageview ×1
uitableview ×1