Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用NSString drawInRect类方法在NSString类中绘制大写字符串_Objective C_Macos - Fatal编程技术网

Objective c 使用NSString drawInRect类方法在NSString类中绘制大写字符串

Objective c 使用NSString drawInRect类方法在NSString类中绘制大写字符串,objective-c,macos,Objective C,Macos,我正在尝试用obj c解决编程背后的练习。问题是使用NSString类的绘图方法绘制字符串的大写版本。到目前为止,我已经为这个类创建了一个类别,当我尝试实现draw方法时,它说我的选择器在NSString类中没有可见的@接口。任何帮助都将不胜感激 这是我的密码: #import "NSString+NSStringDrawing.h" @implementation NSString (StringDrawing) -(void)upperCaseGreeting: (NSString *)

我正在尝试用obj c解决编程背后的练习。问题是使用NSString类的绘图方法绘制字符串的大写版本。到目前为止,我已经为这个类创建了一个类别,当我尝试实现draw方法时,它说我的选择器在NSString类中没有可见的@接口。任何帮助都将不胜感激

这是我的密码:

#import "NSString+NSStringDrawing.h"  
@implementation NSString (StringDrawing)
-(void)upperCaseGreeting: (NSString *) greeting{
    NSString *uppercaseGreetingVar = [greeting uppercaseString ];
    NSRect aRect;
    CGSize size1 = {9,5};
    aRect.size = size1;                                  
    [uppercaseGreetingVar drawInRect: aRect withAttributes: 0];
}
在主要方法中:

 NSString *obj = [NSString new];
 [obj upperCaseGreeting:@"ABCDEF"];
所有操作都将执行,直到达到drawInRect方法。我得到以下错误:

-[__NSCFString drawInRect:withAttributes:]: unrecognized selector sent to instance 0x100302130
2014-07-23 00:47:48.964 SS[5324:303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString drawInRect:withAttributes:]: unrecognized selector sent to instance 0x100302130'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff912c425c __exceptionPreprocess + 172
    1   libobjc.A.dylib                     0x00007fff90e30e75 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff912c712d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x00007fff91222272 ___forwarding___ + 1010
    4   CoreFoundation                      0x00007fff91221df8 _CF_forwarding_prep_0 + 120
    5   SS                                  0x000000010000241e -[NSString(StringDrawing) upperCaseGreeting:] + 222
    6   SS                                  0x00000001000027bb main + 875
    7   libdyld.dylib                       0x00007fff9594d5fd start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

您需要将您的类别标题(
NSString+mycolcategory.h
)导入到您打算使用它的文件中。

我们也希望您能提供一些代码。您好。你的问题缺乏细节。请发布一些代码以获得帮助。同样要求解决学校习题也不常见。为什么你需要在
NSString
类中设置一个类别来获得大写字符串?标准的
uppercaseString
方法有什么问题?这不是学校练习。我学习目标C是出于我自己的兴趣。我正在阅读开发人员的文档,并以自己的方式完成它。问题如下:向NSString添加一个类别,以便添加一个方法来在给定点绘制字符串的大写版本,调用现有的NSStringDrawing类别方法之一来执行实际绘制。这些方法记录在iOS的NSString UIKit增补参考和OS X的NSString应用程序套件增补参考中。#导入//接口文件///接口NSString(NSStringAdditions)-(void)大写字符串:(NSString*)问候语-(无效)沙伊希;-(void)drawInRect:(CGRect)aRect//@结束#导入“NSString+NSStringAdditions.h”//implementation file#导入“XYZView.h”@implementation-NSString(NSStringAdditions)-(void)upperCaseString:(NSString*)问候语{NSString str=[问候语upperCaseString];NSLog(@“%@”,str);}-(void)drawInRect:(NSRect)aRect{NSRect rect=aRect;aRect.origin.x=9;aRect.origin.y=5;[@“abcde”drawInRect:rect];}-(void)sayHi{[自大写字符串:(NSString)@“abcde”];}end