我试图实现一个NSMutableDictionary的子类,它返回nil而不是在字典中不存在键时抛出NSUndefinedKeyException.
但是,当我尝试将对象添加到我的字典中时,我得到了
[NSMutableDictionary setObject:forKey:]: method only defined for abstract class
Run Code Online (Sandbox Code Playgroud)
NilDictionary.h
@interface NilDictionary : NSMutableDictionary {
}
@end
Run Code Online (Sandbox Code Playgroud)
NilDctionary.m
@implementation NilDictionary
- (id)valueForUndefinedKey:(NSString *)key {
return nil;
}
@end
Run Code Online (Sandbox Code Playgroud)
我是否真的必须在我的子类中再次实现NSMutableDictionary中的所有方法,或者是否有其他类我应该进行子类化?
澄清:我原来的问题归结为我无法正确阅读文档.
如果你需要子类NSMutableDictionary,请检查正确的答案.如果你想要一个在你的密钥不存在时返回nil的字典,NSMutableDictionary已经这样做了.
嘿,任何人都可以指导我通过这个我在表中有大约15个条目我希望另外15个在最后一个UITableViewCell中提出更多的负载.谁能帮助我?
我有疑问:我想避免[UIImage imageNamed:].所以我做了:
UIImage *prodImg = [[UIImage alloc] initWithContentsOfFile:@"myimage.png"];
controller.productImg.image = prodImg;
[prodImg release];
Run Code Online (Sandbox Code Playgroud)
但现在图像不再显示了.
有谁知道如何让它工作?
我正在使用AVFoundation进行视频录制.我必须将视频裁剪为320x280.我正在使用以下代码获取CMSampleBufferRef并将其转换为UIImage.
CGImageRef _cgImage = [self imageFromSampleBuffer:sampleBuffer];
UIImage *_uiImage = [UIImage imageWithCGImage:_cgImage];
CGImageRelease(_cgImage);
_uiImage = [_uiImage resizedImageWithSize:CGSizeMake(320, 280)];
CMSampleBufferRef croppedBuffer = /* NEED HELP WITH THIS */
[_videoInput appendSampleBuffer:sampleBuffer];
// _videoInput is a AVAssetWriterInput
Run Code Online (Sandbox Code Playgroud)
该imageFromSampleBuffer:方法如下:
- (CGImageRef) imageFromSampleBuffer:(CMSampleBufferRef) sampleBuffer // Create a CGImageRef from sample buffer data
{
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(imageBuffer,0); // Lock the image buffer
uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddressOfPlane(imageBuffer, 0); // Get information of the image
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
size_t …Run Code Online (Sandbox Code Playgroud) 我需要通过按钮点击在我的应用程序中以编程方式调用.
因为我发现这样的代码.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:1-800-555-1212"]];
Run Code Online (Sandbox Code Playgroud)
它是否适用于iphone sdk 3.0和iphone 2.0
任何帮助都可以
提前谢谢你.
我有一个NSMutableDictionary.我必须Key在我的代码中动态地将字典中的任何内容重命名为新值.我找不到任何内置API来执行此操作.
我怎样才能做到这一点?是否有可用的内置API?
感谢大家..
所以我手动创建了一个UINavigationController,将其设置为我的UIWindow的 rootViewController,我想使用后退按钮退出UINavigationController并在其位置加载另一个viewController.但是,UINavigationBar的backItem属性是readonly,所以我不知道如何正确设置它(它是只读的,在根导航视图中默认为nil).我怎样才能实现这一点(或类似的效果,我希望能够通过按下根视图上的后退按钮有效地"退出"这个UINavigationController).
或者,这是不好的形式?我应该如何逃避UINavigationController的根视图?
编辑:
使用以下代码尝试了Legolas的解决方案:(某些名称已更改)
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:plvc]; // plvc being the first viewcontroller
MyAppDelegate* appDelegate = [Utility getAppDelegate];
appDelegate.window.rootViewController = navController;
UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Start" style:UIBarButtonItemStyleBordered target:self action:@selector(initializeStuff)];
navController.navigationItem.leftBarButtonItem = backButton;
[navController.navigationItem setHidesBackButton:YES animated:YES];
[navController.view setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)
但按钮不显示.我究竟做错了什么?其他后退按钮显示正常,但这个仍然没有.
我想NSString分成一个NSArray.例如,给定:
NSString *myString=@"ABCDEF";
Run Code Online (Sandbox Code Playgroud)
我想要一个NSArray像:
NSArray *myArray={A,B,C,D,E,F};
Run Code Online (Sandbox Code Playgroud)
使用Objective-C和Cocoa如何做到这一点?
我正在创建一个框架,如果你愿意,可以使用CoreData.该框架还具有CoreData之外的功能.如何在IfDef中包装所有CoreData特定代码,检查CoreData框架是否可用?
core-data objective-c conditional-compilation ios ios-frameworks
objective-c ×10
ios ×7
iphone ×6
cocoa-touch ×3
cocoa ×2
avfoundation ×1
core-data ×1
imagenamed ×1
ios4 ×1
subclassing ×1
uiimage ×1
uitableview ×1
video ×1
xcode ×1