Tag: objective c

Cocoapods ld:找不到-lPods-Projectname的库

我已经安装了cocoa豆荚库和一些框架。 现在,当我编译项目生成失败。 错误:找不到-lPods-Project的ld:library clang:错误:linker命令失败,退出代码1(使用-v查看调用) 这里是文字的一部分: Ld /Users/polzovatel/Library/Developer/Xcode/DerivedData/Project-bybevfqrgvqqldbzsgewqafpmylj/Build/Products/Debug-iphonesimulator/Project app/Project normal i386 cd /Users/polzovatel/Projects/iOS-master/Project_iPhone export IPHONEOS_DEPLOYMENT_TARGET=6.0 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 我需要做什么来解决这个问题?

如何更改UISegmentedControl的字体颜色

我尝试将UISegmentedControl字体颜色从白色更改为黑色(对于iOS 4. *) UISegmentedControl *button = [[[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:itemTitle, nil]] autorelease]; button.momentary = YES; button.segmentedControlStyle = UISegmentedControlStyleBar; button.tintColor = [UIColor redColor]; for (id segment in [button subviews]) { for (id label in [segment subviews]) { if ([label isKindOfClass:[UILabel class]]) { UILabel *titleLabel = (UILabel *) label; [titleLabel setTextColor:[UIColor blackColor]]; } } } UIBarButtonItem *barButtonItem […]

在iOS UILabel上设置BOLD字体

我已经使用Interface Builder为UILabel中的文本分配了大小为14的“Helvetica”自定义字体。 我在多个地方使用相同的标签,但在某些地方,我必须以粗体显示文本。 有没有什么办法可以指定使现有的字体粗体,而不是再次创build整个UIFont? 这就是我现在所做的: myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14];

UITabBar不显示在iOS 7中选定的项目图像

这些图标在ios 6中显示正常,但在ios 7中显示不了。我在viewController的viewDidLoad方法中设置了选中的状态。 当用户select一个标签栏项目图像消失。 这是我的代码: UITabBar *tabBar = self.tabBarController.tabBar; if ([UITabBar instancesRespondToSelector:@selector(setSelectedImageTintColor:)]) { [self.tabBarController.tabBar setSelectedImageTintColor:[UIColor whiteColor]]; } UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; UITabBarItem *item3 = [tabBar.items objectAtIndex:3]; [item0 setTitle:@"Home"]; [item1 setTitle:@"Calendar"]; [item2 setTitle:@"News"]; [item3 setTitle:@"My Events"]; [item0 setFinishedSelectedImage:[UIImage imageNamed:@"homeIconSelected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"home2.png"]]; [item1 setFinishedSelectedImage:[UIImage imageNamed:@"Calendar"] withFinishedUnselectedImage:[UIImage […]

UICollectionView只调用didSelectItemAtIndexPath如果用户双击,不会调用时,用户单击

我有一个关于屏幕大小的UICollectionView。 它显示的UICollectionViewCells与collectionView的大小相同。 每个单元格都有一个UIImage,它是单元格的大小。 CollectionView具有分页function,所以本质上它是一个全屏的照片幻灯片,用户可以滑过。 问题是这样的 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath只在用户用手指敲击单元格或长按一个手指然后释放时才被调用。 它似乎没有单击select的默认行为。 我还没有对CollectionView手势识别器进行任何更改,因此无法find解决此问题的解决scheme。

轻量级迁移NSPersistentDocument

我正在尝试在Core Data中进行SQLite存储的轻量级迁移。 在Xcode 4.3.1上使用Lion 10.7.3。 在我的NSPersistentDocument子类(AccountDocument)中,我重写了用于configuration持久性存储协调器的方法,以便获得适当的迁移选项: – (BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)url ofType:(NSString *)fileType modelConfiguration:(NSString *)configuration storeOptions:(NSDictionary *)storeOptions error:(NSError **)error { NSMutableDictionary *newStoreOptions; if (storeOptions == nil) { newStoreOptions = [NSMutableDictionary dictionary]; } else { newStoreOptions = [storeOptions mutableCopy]; } [newStoreOptions setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption]; [newStoreOptions setObject:[NSNumber numberWithBool:YES] forKey:NSInferMappingModelAutomaticallyOption]; BOOL result = [super configurePersistentStoreCoordinatorForURL:url ofType:fileType modelConfiguration:configuration storeOptions:newStoreOptions error:error]; return […]

为Objective-C集合实现-hash / -isEqual:/ -isEqualTo …:

注意:下面的SO问题是相关的,但是他们和链接的资源似乎都不能完全回答我的问题,特别是在实现对象集合的平等testing方面。 覆盖-isEqual和-hash的最佳实践 在可变的cocoa对象上实现-hash的技巧 背景 NSObject提供了默认的实现-hash (它返回实例的地址,比如(NSUInteger)self )和-isEqual:除非接收者的地址和参数相同,否则返回NO 。 这些方法被devise为根据需要被覆盖,但是文档清楚地表明你应该提供或者不提供。 此外,如果-isEqual:对于两个对象返回YES ,则这些对象的-hash结果必须相同。 如果不是这样,那么当对象应该是相同的,比如两个string实例(其中的NSOrderedSame -compare: returns NSOrderedSame )被添加到Cocoa集合中,或者直接进行比较时,问题会随之而来。 上下文 我开发了CHDataStructures.framework ,一个Objective-C数据结构的开源库。 我已经实现了一些集合,并且正在改进和增强它们的function。 我想要添加的function之一是能够比较集合的平等与另一个。 这些比较应该考虑两个集合中存在的对象(包括sorting,如果适用),而不是只比较内存地址。 这种方法在cocoa中有相当的先例,并且通常使用一种单独的方法,包括以下方法: -[NSArray isEqualToArray:] -[NSDate isEqualToDate:] -[NSDictionary isEqualToDictionary:] -[NSNumber isEqualToNumber:] -[NSSet isEqualToSet:] -[NSString isEqualToString:] -[NSValue isEqualToValue:] 我想使自定义集合对于相等性testing的健壮性,所以他们可以安全地(可预测地)将其添加到其他集合中,并允许其他集合(如NSSet)确定两个集合是否相等/等同/重复。 问题 一个-isEqualTo…:方法可以很好地工作,但是定义这些方法的类通常也会覆盖-isEqual:如果参数是相同的类(或者可能是子类),则调用[self isEqualTo…:]接收者,否则[super isEqual:] 。 这意味着该类还必须定义-hash ,以便为具有相同内容的不同实例返回相同的值。 另外,苹果的-hash文件规定如下:(强调我的) “如果将可变对象添加到使用散列值确定对象在集合中的位置的集合中,则在对象位于集合中时,由对象的散列方法返回的值不得更改,因此无论是散列方法不能依赖任何对象的内部状态信息, 或者当对象位于集合中时,必须确保对象的内部状态信息不发生变化。因此,例如,可以将可变字典放在哈希表中,但必须而不是在它那里改变它(注意可能很难知道一个给定的对象是否在一个集合中)。“ 编辑: 我当然明白为什么这是必要的,并完全同意推理 – 我在这里提到它提供了额外的背景,并且为了简洁起见跳过为什么是这样的话题。 我所有的集合都是可变的,哈希将不得不考虑至less一些内容,所以这里唯一的select是将其存储在另一个集合中的集合进行变异时,将其视为编程错误。 (我的集合都采用NSCopying ,所以像NSDictionary集合可以成功地作为一个副本作为一个键等) […]

Xcode:可以自动创build存根协议接口所需的方法?

从Eclipse / Java背景来看,我最喜欢的function之一就是能够快速地将接口所需的所有方法存根出来。 在Eclipse中,我可以从源菜单中select“覆盖/实现”来为接口的任何方法生成存根方法。 我想在Objective-C中做同样的事情。 例如,如果我声明一个实现“NSCoding”协议的类,我想让Xcode自动生成实现此协议所需的方法。 这是令人沮丧的查找,然后复制/粘贴每个协议,我试图实现所需的方法的签名。 我一直在试图找出这是否可能,但还没有发现任何有希望的。 这在XCode中可能吗?

OSStatus错误代码-34018

我正在使用SecItemCopyMatching访问iOS钥匙串。 大概有百分之一我从后台重新启动应用程序后-34018得到-34018结果代码。 该文件指出: 为钥匙串服务分配的错误空间是不连续的:-25240到-25279和-25290到-25329。 钥匙串项目服务也可以返回noErr(0)或paramErr(-50)或CSSM结果代码 所以,似乎-34018是一个“CSSM结果代码”。 我已经按照build议的链接,但无法find结果代码。 它是什么-34018结果代码? 我怎样才能获得更可靠的钥匙串访问? – (NSData *)getKeychainData:(NSString *)key { NSDictionary *query = @{ (__bridge id)kSecClass:(__bridge id)kSecClassGenericPassword, (__bridge id)kSecAttrService:SEC_ATTR_SERVICE, (__bridge id)kSecAttrAccount:key, (__bridge id)kSecReturnData:@YES }; CFDataRef result = nil; OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&result); if(status == errSecItemNotFound) { return nil; } if(status == noErr) { return CFBridgingRelease(result); } else { […]

Objective-C中的前向声明枚举

在Objective-C程序中遇到枚举可见性问题。 我有两个头文件,一个定义了一个typedef enum 。 另一个文件需要使用typedeftypes。 在直接的C中,我只是简单地包含另一个头文件,但是在Objective-C中,build议不要在头文件之间使用#import ,而@class根据需要使用forward @class声明。 但是,我无法弄清楚如何转发 – 声明一个枚举types。 我不需要实际的枚举值,除了在相应的.m实现文件中,我可以安全地#import了。 那么我怎样才能得到在头文件中识别typedef enum ?