lib/cocoa: fix NSString::to_s to use to_s_with_copy
[nit.git] / lib / cocoa / foundation.nit
index bbb27ab..3a6fa98 100644 (file)
@@ -37,7 +37,7 @@ extern class NSString in "ObjC" `{ NSString * `}
        # Get an UTF8 encoded `char*` copy of `self`
        fun utf8_string: NativeString in "ObjC" `{ return (char *)[self UTF8String]; `}
 
-       redef fun to_s do return utf8_string.to_s
+       redef fun to_s do return utf8_string.to_s_with_copy
 end
 
 redef class NativeString
@@ -45,13 +45,13 @@ redef class NativeString
        fun to_nsstring(length: Int): NSString in "ObjC" `{
                return [[NSString alloc] initWithBytes:self
                        length:length
-                       encoding:NSASCIIStringEncoding];
+                       encoding:NSUTF8StringEncoding];
        `}
 end
 
 redef class Text
        # Get a `NSString` from `self`
-       fun to_nsstring: NSString do return to_cstring.to_nsstring(length)
+       fun to_nsstring: NSString do return to_cstring.to_nsstring(bytelen)
 end
 
 # Wrapper of byte buffers
@@ -63,7 +63,7 @@ extern class NSData in "ObjC" `{ NSData * `}
        # Number of bytes containted in `self`
        fun length: Int in "ObjC" `{ return self.length; `}
 
-       redef fun to_s do return bytes.to_s_with_length(length)
+       redef fun to_s do return bytes.to_s_with_copy_and_length(length)
 end
 
 # Error condition
@@ -149,3 +149,24 @@ extern class NSIndexPath in "ObjC" `{ NSIndexPath * `}
                return [self indexAtPosition: position];
        `}
 end
+
+# Interface to the defaults system for an app to customize its behavior to match a user's preferences
+extern class NSUserDefaults in "ObjC" `{ NSUserDefaults * `}
+       super NSObject
+
+       # Wraps: `[NSUserDefaults standardUserDefaults]`
+       new standard_user_defaults in "ObjC" `{
+               return [NSUserDefaults standardUserDefaults];
+       `}
+
+       # Wraps: `[NSIndexPath stringForKey:]`
+       fun string_for_key(key: NSString): NSString in "ObjC" `{
+               return [self stringForKey: key];
+       `}
+
+       # Wraps: `[NSIndexPath setObject: forKey:]`
+       fun set_object(value: NSObject, default_name: NSString)
+       in "ObjC" `{
+               [self setObject:value forKey:default_name];
+       `}
+end