标签: nsstring

stringByReplacingCharactersInRange不替换它的追加!

我花了5个小时尝试找到一个方法..我试图为iPhone做一个刽子手应用程序,下面的方法是当玩家选择一个角色并且它与所选单词匹配时应该调用的方法.

-(void)replaceTheHiddenTextWithNewText:(NSString*)character{
NSString *fullTextField = fullText.text;
int textCount = [hiddenText.text length];

NSString *theRiddle;
for (int i = textCount-1 ; i>=0; i--) {

    NSString *hiddenTextField = [[NSMutableString alloc] initWithString:hiddenText.text];
    NSString *aChar=[fullTextField substringWithRange:NSMakeRange(i/3,1)];

    if ([aChar isEqualToString:@" "]) {

        theRiddle= [hiddenTextField stringByReplacingCharactersInRange:NSMakeRange(i, 1) withString:@" "];
    }else if ([aChar isEqualToString:character]) {
        theRiddle =[hiddenTextField stringByReplacingCharactersInRange:NSMakeRange(i, 1) withString:aChar];

      }else{
        theRiddle = [hiddenTextField stringByReplacingCharactersInRange:NSMakeRange(i, 1) withString:@"_"];


    }
    hiddenTextField = theRiddle;    
}
hiddenText.text=theRiddle;
Run Code Online (Sandbox Code Playgroud)

}

问题是stringByReplacingCharactersInRange不替换字符,它将它附加到下划线我在这里做错了什么?

最诚挚的问候,M Hegab

iphone objective-c nsstring

0
推荐指数
1
解决办法
5713
查看次数

检查NSMutableArray上的重复NSStrings

我有一个NSMutableArray,我想添加字符串.在将字符串添加到数组之前,我需要检查数组中是否已存在该字符串.无论如何知道这样做的好方法吗?

谢谢!

cocoa objective-c duplicates nsstring nsarray

0
推荐指数
1
解决办法
4810
查看次数

NSString componentsSeparatedByString:返回自动释放的数组吗?

在下面的方法中,我不确定为什么释放其中一个数组会导致异常.我能看到的唯一原因是,如果componentsSeparatedByString返回一个自动释放的数组,但我看不出文档中提到它确实存在.

-(void)addRow:(NSString *)stringWithNumbers;
{

    NSArray *numbers = [stringWithNumbers componentsSeparatedByString:@" "];
    NSMutableArray *row = [[NSMutableArray alloc] initWithCapacity:[numbers count]];
    for (NSString *number in numbers) {
        Number *n = [[Number alloc] initWithNumber:number];
        [row addObject:n];
        [n release];
    }
    [rows addObject:row];
    [row release];
//    [numbers release];  <-- leads to exception
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以确认阵列是否已自动释放?如果是这样,我怎么知道/为什么我应该知道?
是否可以通过代码检查对象的任何一个实例是否自动释放?

objective-c autorelease nsstring

0
推荐指数
1
解决办法
3077
查看次数

Objective C NSString问题

我在我的progrram中有以下代码.我试图将每个数字追加到NSString.我在第二次附加字符串后收到错误.错误是消息发送到解除分配的对象.我知道这是一个内存管理问题.我没有发布小计.有人知道小计被解除分配的原因吗?提前致谢.

-(IBAction)digitPressed:(UIButton *)sender
{
       NSString *digit = [[sender titleLabel] text];
       subtotal=[subtotal stringByAppendingString:digit];
       NSLog(@"appended string is :%@",subtotal);
}

-(void)ViewDidLoad
{
  subtotal = [[NSString alloc]init];

}
Run Code Online (Sandbox Code Playgroud)

objective-c nsstring

0
推荐指数
1
解决办法
341
查看次数

NSString componentsSeparatedByString的错误?

我一直在尝试将字符串的部分读入数组并遇到一些问题.虽然我的任务更复杂,但即使是一个简单的示例情况也会产生同样的问题:代码编译并运行但是字符串数组的大小始终是1,而字符串[0]中包含的唯一内容是" __NSArrayM".

NSString *string = @"John, Bob, Jane";
NSArray *strings = [string componentsSeparatedByString: @", "];
Run Code Online (Sandbox Code Playgroud)

提前感谢任何想法!

objective-c nsstring nsarray

0
推荐指数
1
解决办法
738
查看次数

有没有办法在条件下破坏NSXMLParser?

我有一个关于nsxmlparser的简单问题.

这是我的片段

- (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string{
    [...]
    if ([currentElement isEqualToString:@"openpos"]) {
        if ([string isEqualToString:@"0"]) {
            // I WOULD EXIT FROM LOOP HERE!
            return;
        }
    }
    [...]
}
Run Code Online (Sandbox Code Playgroud)

为什么这种回归不起作用
我需要退出解析器方法并返回我的类错误!

我需要强制例外吗?或者有更好的方法来破解解析器循环?

谢谢,
阿尔贝托

iphone objective-c nsstring nsxmlparser xml-parsing

0
推荐指数
1
解决办法
285
查看次数

从方法返回NSString时的内存管理和所有权

我正在Objective-C中编写一个方法,它返回一个基于NSMutableArray输入的字符串.我不打算让调用者修改字符串,但也不小心.该方法的当前签名读作:

- (NSMutableString *) generateString:(NSMutableArray *)myArray
Run Code Online (Sandbox Code Playgroud)

该项目目前是一个命令行基础工具,以学习绳索,但这最终将最终在iPhone应用程序中.

我的问题是:

  1. 返回NSString是否更为谨慎?

2)当我返回NSMutableString时,我应该使用autorelease吗?如果你建议我返回一个NSString,它如何修改返回它?

3)如果我还想返回一个错误对象来识别是否发生了错误,可能是一个枚举和一个字符串,在这种情况下所有权是如何工作的?该方法不称为alloc,new或copy,所以调用者如何知道?除了上面方法中的字符串之外,我如何返回分配的错误对象?

谢谢!

cocoa memory-management objective-c nsstring nsmutablestring

0
推荐指数
1
解决办法
422
查看次数

将"1.0E-4"从NSString转换为double

我想从"1.04E-4"NSString获得双倍值,但我还没有管理如何做到这一点.我尝试了以下方法:

1.

NSString* str = @"1.0E-4";
double value = [str doubleValue];  //returns 0.0001
Run Code Online (Sandbox Code Playgroud)

2.

NSString* str = @"1.0E-4";
double value;
NSScanner* scanner = [NSScanner scannerWithString:str];
[scanner scanDouble:&value];
//0.0001 again
Run Code Online (Sandbox Code Playgroud)

而不是值= 1.0E-4,我得到0.0001

有人可以帮我吗?

欣赏,

亚历克斯.

double objective-c nsstring nsscanner

0
推荐指数
1
解决办法
6479
查看次数

NSString操作

我想像操纵NSString一样

(0)喜欢(1).(见.(2))

(0)=拉曼

(1)=你

(2)= ThisGift

拉曼喜欢你.(见.ThisGift)

我不知道什么approch可以解决这个问题.

在此先感谢,此致

Venkat.

iphone objective-c nsstring

0
推荐指数
1
解决办法
733
查看次数

如何声明具有多个可能值的NSString

我想在警报中声明要使用的NSString对象,但其实际内容取决于由某个变量确定的各种因素.我想知道如何最好地解决这个问题.在大多数情况下,我做过这样的事情:

- (void)info {
    NSString *targetString = [[NSString alloc] init];
    switch (self.target) {
        case 1:
            targetString = @"ONE";
            break;
        case 2:
            targetString = @"TWO";
            break;
        case 3:
            targetString = @"THREE";
            break;
        default:
            targetString = @"";
            break;
    }

NSString *message = [[NSString alloc] initWithFormat:@"Text: %@", targetString]; 
    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:@"Info"
                          message:message 
                          delegate:self 
                          cancelButtonTitle:@"Ok!" 
                          otherButtonTitles:nil];
    alert.tag = kInfoAlert;
    [alert show];
    [alert release];
    [targetString release];
    [message release];
}
Run Code Online (Sandbox Code Playgroud)

但是,当我通过构建分析器运行时,我收到消息告诉我字符串泄漏内存:

首先它说:

永远不会读取在初始化期间存储到'targetString'的值

然后:

在第137行分配并存储到'targetString'中的对象的潜在泄漏

这两条评论位于第136和137行,其中第136行是

NSString *targetString = [[NSString alloc] init];

另一种方法是将字符串声明为 …

iphone memory-management objective-c nsstring

0
推荐指数
1
解决办法
1692
查看次数