2012年8月30日 星期四

【API】Google Weather API 停止服務

話說…

大家最愛用的Google Weather API ,因iGoogle停止服務的關係,也跟著被停…

詳情請看   It appears Google has quietly killed its weather API

唉…這麼好用又免費的API…真的是可惜了

(雖然天氣預報不是很準… =  =)

但它真的很好上手,很適合新手使用…

為了米布維護的專案…

米布又找到了一個免費的 Weather API - World Weather Online

因為它簡單又好用…所以就不貼圖啦!

只要註冊好一個API key就可以生出一段URL

就可以用這個產生出來的URL開始解析相關資料了。

輸出的格式目前只有三種:XML、JSON、CSV

到時候就看各位怎麼選擇了…

再附上相關的world weather online 提供的 icon資訊


【iOS】NSString & NSMutableString

資料來源:NSString Class Reference  & NSMutableString Class Reference

NSString

類型:物件

NSMutableString 和它是延伸關係



兩者不同性:

     差就差在彈性度。

    NSString 一但放入內容了,就無法直接做更改變動;相較之下,NSMutableString就沒有太大的問題。

    NSString如果內容要做更動的話,只能用NSString(舊,未處理) = NSString(新,已處理)做覆蓋的動作,而不是NSMutableString直接增加、刪除、修改字元。

相關應用:

切割字串

    米布比較常用有以下四種寫法,其實它不止四種,有需要其他寫法的,可以到Apple Class Reference 上做查詢。

- (NSString *)substringWithRange:(NSRange)aRange

- (NSString *)substringFromIndex:(NSUInteger)anIndex

- (NSString *)substringToIndex:(NSUInteger)anIndex

以上三種簡單來說就是 - 取某一區域的字。

範例字串:NSString *tmp_str = @"ABCDEFG";

substringWithRange就是取特定區域

例:
NSString *result_str = [tmp_str substringWithRange:NSMakeRange(2,3)];

結果為 result_str = @"CDE";


substringFromIndex就是截取從字元位置開始一直取到最後
例:
NSString *result_str = [tmp_str substringFromIndex:3];

結果為 result_str = @"DEFG";

substringToIndex就是頭截取到你定義的字元位置

例:
NSString *result_str = [tmp_str substringToIndex:3];

結果為 result_str = @"ABC";




另外,還有一種很方便的方法來做字串的切割!!!這種很適合用於陣列資料轉字串,再轉回陣列所用。


- (NSArray *)componentsSeparatedByString:(NSString *)separator

範例字串:NSString *tmp_str = @"AB|CDE%FG";

NSArray *result_ary = [tmp_str componentsSeparatedByString:@"|"];

結果為 result_ary = {@"AB",@"CDE%FG"};

看出來了嗎!!!

它利用特定符號來做切割的動作,要是之前用一個for迴圈將NSArray的內容用一個符號串成字串,就不怕資料儲存不易,加上用這個來做還原,是不是很棒啊!!!!

2012年7月4日 星期三

【APIs】DropBox

開發者參考網址如下…  https://www.dropbox.com/developers

好吧~~那就開始DropBox Link Own APPs的開發

畫面還蠻簡昜的,很好上手。

按下 "Get Start Now!" -> "Next section>>" -> 就可以看到它可以開發的平台


那米布就先從iOS下手

免不了又要為開發者帳號申請一個APP Keys (社群型的好像都是這樣玩的)

到了"Authentication"這個選項,其實就可以看到開始設定的說明了,

不彷大家可以開始走馬看花,找找自已所需要的功能吧。

米布之前沒有用過這個,自然是重頭來了。

在側邊欄會可找到 "Development kits" 下載 DropBox's  SDK for iOs


還蠻齊全的…

下載完後就可以看看裡面的內容,大致上就可以知道怎麼運行。

先來看Code 去,晚點再來報告~~


2012年6月6日 星期三

【c#】Slider應用

目前我有使用到的語法如下:

SmallChange
LargeChange
為Slider移動的單位
 
ValueChanged
當改變Slider值的時候?

IsEnabled

能給使用者拖拉?
  

Minimum
Maximum
顯示範圍

 
還有到Blend內設定Slider的樣子…(但現在是mac的鍵盤…不好切畫面,回家再補上至分隔線下 T  MT)
 
唉~~又有問題了 =  =  如下:

無法藉由  ValueChanged 更改Slider的值…

費了好大的力氣終於找到了解決方法!!!! 
 
如果在xaml內設定Value這個屬性,就不能使用ValueChanged這個方法,兩者會相衝突( ?  m ? )

 
-------------------------我是分隔線-------------------------

【c#】字串應用


用字元及字元陣列切出字串陣列

字元:
 String[] split1 = tmpString.Split('\\');
字元陣列 :
char [] cut ={' ', ',','.','\t'};
String[] split1 = tmpString.Split( cut );


 ====================持續新增中===============================


 2012-04-12-15:29

比對字串
 
string.Equals (stringA,stringB)

 print出來的類別為Boolean

【c#】資料型態間的轉換

有些時候就是需要A型態的資料轉B型態(轉來轉去,轉到都頭昏了 =  口=)


在c#有一個專門在處理這個的函式 Convert


 整個就無敵的好用!!!!!


以下就附上它在msdn的官方說明:

http://msdn.microsoft.com/en-us/library/dsfy6sz9.aspx 


 轉到頭昏的…就參考一下吧~~

【c#】判別物件屬性之ToString是否為null

爬了好多文,終於解決了這個問題…
(看來我的資料結構要重學了QQ

在C#比較特別的是,字串有兩種判別方式

1。object.ToString

2。convert.ToString


這兩個的差別在於確定有沒有值(也就是是不是null)。

意思是說…如果object.ToString為null,系統就會跑出 NullReferenceException,因為不能把NULL轉為字串。

所以只好靠 convert.ToString 做判別的小工具了。

 string hasData = Convert.ToString ((object)objcetA);


哈哈,真的很快就轉換到可以放進if...else...內做判別了…也不用再寫一大串的function來做判別囉~~

【c#】Button.Tag之資料類型轉型

原來~~Button.Tag在c#是個物件~~寫太久的ios會讓人有點…轉不過來,哈,還好有人可以問~~

 所以要先給它一個資料型態==> Button.Tag.ToString() 

取到值後,就可以用  int.Parse( ); 的方式轉成int~~


 private void ListJumpToView(object sender, EventArgs e)
        {
            Button newButton = (Button)sender;            
            MessageBox.Show("tag is" + newButton.Tag); 


            int tag = int.Parse(newButton.Tag.ToString());
            switch (tag)
            {
               ..........
            }
        }


又學到一招了~~GOOD!!!

【Cocos2D_iOS_V1.0.1】b2BodyDef reference

b2BodyDef


以下為此之屬性

BOOL:

          active
          allowSleep
          awake
          bullet
          fixedRotation
       
Float32:
          angle
          angularDamping
          angularVelocity
          inertiaScale
          linearDamping

S??:
          b2BodyDef::

b2BodyDef &:
         operator=(const b2BodyDef &)

b2Vec2:
         linearVelocity
         position

Void *:
         userData

Void:
         ~b2BodyDef()

b2BodyType:
         type {
                            b2_staticBody,//靜態
                            b2_kinematicBody,//動態
                            b2_dynamicBody//運行

                         }