0

私は持っていて、私の人生では、どうやってそれを取るNSStringかを理解することはできません.remove spaceslast 30 characters

次のようなエラー:

3/5/13 3:38:30 PM *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType UTF8String]: unrecognized selector sent to instance 0x160bf20'

また

3/5/13 3:30:51 PM *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType length]: unrecognized selector sent to instance 0x160bf20'

これらのエラーがわかりません。

コード:

NSString* m = (NSString*)CFDictionaryGetValue(diskDesc, kDADiskDescriptionVolumeUUIDKey);
[m stringByReplacingOccurrencesOfString:@" " withString:@""]    
NSString *newString = [m substringToIndex:[m length]-30];

別の更新:

NSString * m = (NSString*)CFDictionaryGetValue(diskDesc, kDADiskDescriptionDeviceModelKey);
NSString * v = (NSString*)CFDictionaryGetValue(diskDesc, kDADiskDescriptionVolumeUUIDKey);

if(m)
{
    m = [m stringByReplacingOccurrencesOfString:@" " withString:@""];
}

if(v)
{
    if([v length] > 30)
    {
        NSString *newString = [v substringToIndex:[v length]-30];
    }
}
4

2 に答える 2

1

エラーチェックの絶好の機会のようです。このような:

NSString * m = (NSString*)CFDictionaryGetValue(diskDesc, kDADiskDescriptionDeviceModelKey);
if(m)
{
    m = [m stringByReplacingOccurrencesOfString:@" " withString:@""]
    if([m length] > 30)
    {
        NSString *newString = [m substringToIndex:[m length]-30];
    } else {
        NSLog( @"m isn't even 30 characters");
    }
} else {
    NSLog( @"I didn't get anything useful from my call to CFDictionaryGetValue");
}
于 2013-03-06T00:08:38.930 に答える