小编Dan*_*sko的帖子

自动首选最大布局宽度在8.0之前的iOS版本上不可用

我用Xcode6 beta6打开了一个现有的iOS项目,Xcode为Storyboard和Xib文件列出了以下警告:

自动首选最大布局宽度在8.0之前的iOS版本上不可用

我尝试通过将宽度设置为显式来解决警告,如下所示:

然而,这并未解决警告.他们怎么能被删除?

ios autolayout xcode6 ios8

322
推荐指数
4
解决办法
10万
查看次数

在Swift中,如何声明符合一个或多个协议的特定类型的变量?

在Swift中,我可以通过如下声明来明确设置变量的类型:

var object: TYPE_NAME
Run Code Online (Sandbox Code Playgroud)

如果我们想更进一步并声明一个符合多个协议的变量,我们可以使用protocol声明:

var object: protocol<ProtocolOne,ProtocolTwo>//etc
Run Code Online (Sandbox Code Playgroud)

如果我想声明一个符合一个或多个协议并且也是特定基类类型的对象,该怎么办?Objective-C等价物如下所示:

NSSomething<ABCProtocolOne,ABCProtocolTwo> * object = ...;
Run Code Online (Sandbox Code Playgroud)

在Swift中,我希望它看起来像这样:

var object: TYPE_NAME,ProtocolOne//etc
Run Code Online (Sandbox Code Playgroud)

这使我们能够灵活地处理基类型的实现以及协议中定义的添加接口.

还有另一种我可能会失踪的更明显的方式吗?

举个例子,假设我有一个UITableViewCell负责返回符合协议的单元的工厂.我们可以轻松设置一个返回符合协议的单元格的泛型函数:

class CellFactory {
    class func createCellForItem<T: UITableViewCell where T:MyProtocol >(item: SpecialItem,tableView: UITableView) -> T {
        //etc
    }
}
Run Code Online (Sandbox Code Playgroud)

后来我想在利用类型和协议的同时将这些单元格出列

var cell: MyProtocol = CellFactory.createCellForItem(somethingAtIndexPath) as UITableViewCell
Run Code Online (Sandbox Code Playgroud)

这会返回错误,因为表视图单元格不符合协议...

我希望能够指定单元格是否UITableViewCell符合MyProtocol变量声明?

理由

如果您熟悉工厂模式,那么在能够返回实现特定接口的特定类的对象的上下文中这将是有意义的.

就像在我的例子中一样,有时我们喜欢定义在应用于特定对象时有意义的接口.我的表格视图单元格的例子就是这样一个理由.

虽然提供的类型并不完全符合上面提到的接口,但是工厂返回的对象也是如此,因此我希望能够灵活地与基类类型和声明的协议接口进行交互

objective-c ios swift swift-protocols

93
推荐指数
2
解决办法
3万
查看次数

Fabric发布XCode 6.3协同编码xcode-select

我正在尝试将一个版本上传到Fabric,我发现错误如下.我正在使用XCode 6.3(最近更新).

  • XCode:6.3
  • 面料:1.1.3
  • OSX:10.10.3

Fabric工具出错

  1. 我该怎么做才能解决上述错误并继续通过Fabric桌面工具上传发布?

  2. 有没有其他方法将二进制文件上传到结构?

xcode release ota ios twitter-fabric

51
推荐指数
2
解决办法
6033
查看次数

突出显示的UITableViewCell与选定的UITableViewCell有什么区别?

UITableViewCell反映了两种不同的状态:突出显示和选中.

对我来说,它们听起来完全相同,究竟是什么区别呢?

iphone uitableview

44
推荐指数
1
解决办法
6867
查看次数

为什么我的UIViewController顶部的20px差距?

问题

考虑以下控制器层次结构:

  • UINavigationController
    • UIViewController
      • UITableViewController

存在UIViewController影响布局.没有它,它UITableViewController占据了整个范围UINavigationController:

在此输入图像描述

但是,如果我UIViewControllerUINavigationController和之间添加一个香草,则UITableViewController在顶部UIViewController和顶部之间出现一个20px的间隙UITableViewController:

在此输入图像描述

即使我将代码减少到最简单的事情,我仍然会观察到这种行为.考虑这个应用程序委托代码:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    window = new UIWindow(UIScreen.MainScreen.Bounds);

    var tableView = new UITableViewController();
    var intermediateView = new UIViewController();
    var navigation = new UINavigationController(intermediateView);

    navigation.View.BackgroundColor = UIColor.Red;
    intermediateView.View.BackgroundColor = UIColor.Green;
    tableView.View.BackgroundColor = UIColor.Blue;

    intermediateView.AddChildViewController(tableView);
    intermediateView.View.AddSubview(tableView.View);
    tableView.DidMoveToParentViewController(intermediateView);

    window.RootViewController  = navigation;
    window.MakeKeyAndVisible();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

上面仍然显示了顶部UIView和顶部之间的20px间隙UITableView.

我对这个问题的理解

我知道有些东西 …

layout uiviewcontroller ios xamarin

44
推荐指数
3
解决办法
7781
查看次数

如何删除CloudKit容器?

我不小心在CloudKit中创建了一个新的容器,当我打开仪表板时,它真的很烦人.有什么建议删除吗?在developer.apple.com上,我没有看到容器的删除按钮.

dashboard icloud cloudkit

43
推荐指数
2
解决办法
1万
查看次数

如何使用Swift中的约束来动画UIView?

在我的设计示例中,我有以下单一视图:

在此输入图像描述

如您所见,它包含一些简单的约束:

  1. 对齐水平和垂直中心,
  2. 高度(设为常数)
  3. 前导和尾随空格(设置为常量)

我想要实现的是让这个红色/粉红色的视图从顶部"进入".传统上,在一个无约束的世界中,我只是修改内部的框架UIView.animateWithDuration,但是我不确定我是如何在约束世界中做类似的.

为了重申我的问题,如何让我的视图从场景开始并使从顶部飞入的视图动画?

我已经考虑过制作垂直中心约束(并随后调用layoutIfNeeded),但它没有达到预期的效果.

谢谢你的帮助.

uiviewanimation ios swift xcode6

43
推荐指数
5
解决办法
4万
查看次数

iOS沙箱环境自动续订订阅

关于iOS自动续订订阅,我有以下问题

a)自动续订订阅是否真的在沙箱环境中自动续订?问题似乎是订阅不会自动更新,尽管文档说即使在沙盒环境中它也应该发生6次.

b)我们是否需要调用restoreCompletedTransactions来获取自动扩展订阅的新收据,或者是-paymentQueue:updatedTransactions:iOS自动调用的方法?(我猜它会自动调用'启动'和'旋转出背景'不确定)

c)您如何在多个设备上处理相同的订阅?这可以通过restoreCompletedTransactions来处理,但是调用它会提示用户输入密码,因此每次启动应用程序时调用它都不是很方便.

iphone storekit in-app-purchase auto-renewing

27
推荐指数
2
解决办法
1万
查看次数

如何在HTTP上将Last-Modified标头从HTTP响应正确转换为NSDate

我正在寻找一个完全可行的解决方案,一个适用于:

  • 任何iOS区域设置或时区
  • 任何/大多数HTTP服务器
  • Xcode 4.0.2 (看原因)

目前破碎的代码:

 NSString lastModifiedString = @"Mon, 06 Jun 2011 12:47:05 GMT";
 NSDateFormatter *df = [[NSDateFormatter alloc] init];  
 //df.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
 df.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss z";
 df.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];  
 df.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];  
 NSDate date = [df dateFromString:lastModifiedString];  
Run Code Online (Sandbox Code Playgroud)

我假设Last-Modified应该使用与HTTP规范中的其他日期字段相同的格式,这意味着使用RFC-1123/RFC-822

资源:

nsdate nsdateformatter ios

16
推荐指数
1
解决办法
2869
查看次数

在CoreData保存之前确定哪些字段已更改

//设置通知

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(dataChanged:)
 name:NSManagedObjectContextDidSaveNotification
 object:context];    
Run Code Online (Sandbox Code Playgroud)

//后来

- (void)dataChanged:(NSNotification *)notification{
  NSDictionary *info = notification.userInfo;
  NSSet *insertedObjects = [info objectForKey:NSInsertedObjectsKey];
  NSSet *deletedObjects = [info objectForKey:NSDeletedObjectsKey];
  NSSet *updatedObjects = [info objectForKey:NSUpdatedObjectsKey];
Run Code Online (Sandbox Code Playgroud)

无论如何要从updatedObjects确定哪些字段实际更改了?

谢谢,迈克尔

core-data objective-c nsmanagedobjectcontext ios

13
推荐指数
1
解决办法
3442
查看次数