Как мне преобразовать значение NSString в NSData?

Как преобразовать значение NSString в NSData?

вопрос задан 23.05.2009
does_not_exist
репутация

10 ответов


  • 1378 рейтинг
    NSString* str = @"teststring";
    NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
    
    ответ дан flitzwald, с репутацией 18942, 23.05.2009
  • 65 рейтинг
    NSString *str = @"helowrld";
    // This converts the string to an NSData object
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    

    вы можете взять ссылку на эту ссылку

    ответ дан ALOK KUMAR, с репутацией 715, 10.03.2015
  • 29 рейтинг

    Преобразование NSString подобным образом вызовет завершающий \0 байт, что означает NSJSONSerialization:JSONObjectWithData и другие ошибки, если вы не удалите их.

    I. е. делать

    NSData* data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
    

    , а затем

    data = [data subdataWithRange:NSMakeRange(0, [data length] - 1)];
    

    , то смело переходите к NSJSONSerialization:JSONObjectWithData.

    ответ дан Andrew Kolesnikov, с репутацией 1694, 25.10.2011
  • 20 рейтинг

    В случае появления Swift Developer,

    для преобразования из NSString / String в NSData

    var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)
    
    ответ дан Sruit A.Suk, с репутацией 4688, 3.03.2015
  • 16 рейтинг

    Objective-C:

    NSString *str = @"test string";
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:str];
    NSString *thatStr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    

    Swift:

    let str = "test string"
    let data = NSKeyedArchiver.archivedData(withRootObject: str)
    let thatStr = NSKeyedUnarchiver.unarchiveObject(with: data) as! String
    
    ответ дан Shamsiddin, с репутацией 1248, 26.03.2016
  • 11 рейтинг

    Прежде всего, вы должны использовать dataUsingEncoding: вместо UTF8String. Вы используете UTF8String только тогда, когда вам нужна строка C в этой кодировке.

    Затем для UTF-16 просто введите NSUnicodeStringEncoding вместо NSUTF8StringEncoding в своем сообщении dataUsingEncoding:.

    ответ дан Jerry Thomsan, с репутацией 1331, 13.09.2012
  • 6 рейтинг

    Для Swift 3 вы будете в основном конвертировать из String в Data.

    let myString = "test"
    let myData = myString.data(using: .utf8)
    print(myData) // Optional(Data)
    
    ответ дан jacks205, с репутацией 407, 1.11.2016
  • 6 рейтинг
    NSString *str = @"hello";
    NSData *data = [NSData dataWithBytes:str.UTF8String length:str.length];
    
    ответ дан Nex Mishra, с репутацией 444, 27.11.2015
  • 1 рейтинг
    NSString *str = @"Banana";
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:true];
    
    ответ дан Kamani Jasmin, с репутацией 307, 13.04.2018
  • 0 рейтинг

    Objective-C

    NSString *str = @"Hello World";
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
    

    Swift

    let str = "Hello World"
    let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false)
    
    ответ дан Rohit Makwana, с репутацией 81, 17.04.2018