반응형

var section1 = ["100","1","a","","","2","k","","10",""]


let order = section1.sort() {

    (s1, s2) -> Bool in

    

    if(s1 < "A" && s2 < "A") {  // 둘 다 숫자이면

        return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending

        

    } else if (s1 >= "A" && s2 >= "A" && s1 <= "z" && s2 <= "z") {  // 둘다 영문이면

        return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending

    } else if(s1 > "z" && s2 > "z") { // 둘 다 한글 이면

        return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending

    } else { //둘 중에 하나라도 같은 타입이 아니면

        return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedDescending

    }

}


위 빨간색으로 칠한 문은 지역로컬이 지정되지 않아 무조건 영문이 우선순위로 소팅이 될 것이다.

한글부터 sort하고 자 한다면 이렇게 하자.

let locale = NSLocale(localeIdentifier: "korea")

return s1.compare(s2, locale: locale) == NSComparisonResult.OrderedDescending 


반응형
반응형

해석하는데 어려움을 겪음..영어 못하는게 죄..ㅠㅠ

나를 더 화나게 한 것은 한글 지원이 되었다는거...ㅡㅡ^

https://firebase.google.com/docs/crash/ios


cocoapods 설정

pod 'Firebase/Crash' 


1. Download a service account key to authenticate your uploads:

  1. Go to the Firebase console and open your Firebase project.
  2. Click settings and select Permissions.
  3. On the Permissions page, select Service Accounts from the left menu.
  4. Click Create service account.
  5. Name the service account "Symbol Upload service account".
  6. Set the Role to Editor (Project -> Editor)
  7. Check the box for Furnish a new private key.
  8. Select the JSON option for key type.
  9. Click Create. This automatically downloads a JSON file with the required keys.

해석하자면...

a. Firebase console 로 가서 프로젝트를 열어라




b.설정을 클릭하고, 권한을 선택하라


c, d. 권한페이지에서 좌측메뉴의 서비스 계정을 선택하고, 서비스 계정 만들기를 클릭 한다.



e, f. 서비스 계정이름을 Symbol Upload service account 로 한다. 역할에서 편집자를 선택한다.


g, h, i. 새 비공개 키 제공을 체크하고 JSON을 선택하고 만들어라. 자동으로 JSON 파일이 다운로드 된다.



2. Add an upload script for your symbol files:

  1. In Xcode, click on your application target, select Build Phases, and click `+` to add a phase.
  2. Select Run Script and add the following content, setting appropriate values for your service account path and GOOGLE_APP_ID:
    # Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
    GOOGLE_APP_ID=1:my:app:id
    
    # Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "/Path/To/ServiceAccount.json"
            


a. Xcode를 실행하고 당신의 애플리케이션 타켓에 Build Phases 를 선택하고 + 버튼을 클릭하여 추가하라

b. Run Script를 선택하고, 구글 아이디와 service 계정 경로 값을 넣어주어라.

  - 구글ID는 GoogleService-Info.plist 파일에 있음.

  - ServiceAccount.json 은 파일은 어디인지 확인하여 경로를 넣어준다.




3. 제대로 작동을 하는 지 테스트 하는 단계

  1. Add an assert to your AppDelegate's didFinishLaunchingWithOptions method to cause a crash when the app launches, right after the Firebase initialization call:

OBJECTIVE-C

SWIFT

fatalError()

  1. Launch the app from Xcode.
  2. Click Stop in Xcode to detach from the debugger.
  3. Launch the app directly from the home screen on the device or emulator.
  4. Wait until your app crashes.
  5. Remove the crashing line so your app can start successfully.
  6. Launch the quickstart from Xcode again. Within 15 secs you should see a log message indicating that the report was successfully uploaded.
  7. Check the Crash Reporting section of the Firebase console to see the error. Note that it takes 1-2 minutes for errors to show there.


AppDelegate 파일의 didFinishLaunchingWithOptions 에 fatalError()를 넣어라.


 - 아래는 구글 번역 돌렸다.

1. 엑스 코드에서 응용 프로그램을 실행합니다.

2. 디버거에서 분리 엑스 코드에서 중지를 클릭합니다.

3. 장치 또는 에뮬레이터의 홈 화면에서 직접 응용 프로그램을 실행합니다.

4. 앱이 충돌 할 때까지 기다립니다.

5. 앱이 성공적으로 시작할 수 있도록 충돌 라인을 제거합니다.

6. 다시 엑스 코드에서 퀵 스타트를 시작합니다. 15 초 이내에 보고서가 성공적으로 업로드되었음을 나타내는 로그 메시지를 볼 수 있습니다.

7. 오류를 확인하기 위해 중포 기지 콘솔의 충돌보고 섹션을 확인합니다. 오류가 표시하는 것은 1 ~ 2 분 거리에 있습니다. 



참고로..

Google-Mobile-Ads-SDK 가 버전이 낮다는 메세지가 나올 경우

cocoapods에서 아래 처럼 수정해 주어라.

platform :ios, '9.0'


target 'Demo' do

    use_frameworks!

    pod 'SQLite.swift', '~> 0.10.1'

    pod 'Firebase/Core'

    # pod 'Firebase/AdMob'     #삭제해 주고

    pod 'Google'

    pod 'Google-Mobile-Ads-SDK'  #추가해주자

    pod 'Firebase/Crash'

end 


Firebase/AdMob 이 낮은버전의 Google-Mobile-Ads-SDK를 바라보고 있어서 그런다.

반응형
반응형

https://firebase.google.com/docs/admob/ios/quick-start



 * Podfile

source 'https://github.com/CocoaPods/Specs.git'


platform :ios, '9.0'

    use_frameworks!

    pod 'Firebase/Core'

    pod 'Firebase/AdMob'


target 'Demo' do

    pod 'Firebase'

end

 $ pod install


 * AppDelegate.swift

import Firebase

import UIKit



@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {


    var window: UIWindow?



    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Override point for customization after application launch.

        

        FIRApp.configure()

        GADMobileAds.configureWithApplicationID("ca-app-pub-3940256099942544/2934735716")

        return true

    } 


 * ViewController.swift


import GoogleMobileAds


class ViewController: UIViewController {

    

    @IBOutlet weak var bannerView: GADBannerView!


override func viewDidLoad() {

        super.viewDidLoad()

        //print("Google Mobile Ads SDK version: \(GADRequest.sdkVersion())")


        bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"

        bannerView.rootViewController = self

        bannerView.loadRequest(GADRequest())


        // Do any additional setup after loading the view, typically from a nib.

    }







반응형
반응형

http://stackoverflow.com/questions/22214843/ios-7-difference-between-viewdidload-and-viewdidappear/22215127#22215127





전부 이해는 못하더라도 전체적인 흐름정도는 익히는 것도...


반응형
반응형

func MultiReturn() -> (String, Int, NSDate) {

    let name = "MultiReturn"

    let age = 25

    let date = NSDate()


    return (name, age, date)

}


print(MultiReturn().0)

print(MultiReturn().1)

print(MultiReturn().2)



반응형
반응형

버튼을 클릭했을 경우 화면에 해당 collectionViewCell 위치로 이동할 수 있게 한다.

@IBAction func time00(sender: AnyObject) {

    self.collectionview?.scrollToItemAtIndexPath(NSIndexPath(forItem: 0, inSection: 0), atScrollPosition: .Left, animated: true)


forItem 은 이동하는 셀로우 : IndexPath.row 라고 생각하면 될 듯..

atScrollPosition 은 화면에 어떤 위치를 기준으로 삼아서 해당 셀을 보여 줄 것인지 : .Top, .Bottom, .Left, .Right

반응형
반응형

http://stackoverflow.com/questions/28148843/ios-autolayout-two-buttons-of-equal-width-side-by-side


반응형
반응형


* Send

class SendClass {


    struct sendStruct {
        var name: String
        var age: String
    }

    var sendArray = [sendStruct]()

    func SendFunction() -> Array<sendStruct> {

        return sendArray

    }
}

* Receive

class RecevieClass {

    struct ReceiveStruct {
        var name: String
        var age: String
    }

    var ReceiveArray: Array<ReceiveStruct> = [ReceiveStruct]()

    let Send = SendClass()

    ReceiveArray =  Send.SendFunction().map {

        ReceiveStruct(name: $0.name, age: $0.age)

    }

}


반응형
반응형
let str = "man|17&woman|19"

let result = str.componentsSeparatedByString("&")

print(result)  // ["man|17", "woman|19]



let charSet = NSCharacterSet(charactersInString: "|^")

let result = str.componentsSeparatedByCharactersInSet(charSet)

print(result)  // ["man","17","woman","19"]



let Array2D = str.componentsSeparatedByString("^").map {

    $0.componentsSeparatedByString("|")

}


print(Array2D) // [["man,"17"],["woman","19"]]








반응형
반응형


$ pod install

Analyzing dependencies

[!] Unable to satisfy the following requirements:


- `SQLite.swift (~> 0.10.1)` required by `Podfile`


None of your spec sources contain a spec satisfying the dependency: `SQLite.swift (~> 0.10.1)`.


You have either:

 * out-of-date source repos which you can update with `pod repo update`.

 * mistyped the name or version.

 * not added the source repo that hosts the Podspec to your Podfile.


Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by default.


$ pod repo update


Updating spec repo `master`

Performing a deep fetch of the `master` specs repo to improve future performance

.

.

.


$ pod install

반응형
반응형

    struct InfoStruct {

        var NO: String

        var MenuItemName: String

        var MenuItemFamily: String

        var MenuImage: UIImage

        var PhoneNumber: String

    }


var InfoArray = [InfoStruct]()


InfoArray.append(InfoStruct(NO: user[no], MenuItemName: user[firstname], MenuItemFamily: user[lastname], MenuImage: user.get(userimage), PhoneNumber: user[phonenumber]))


//let indexNo = NO.indexOf(NumberID)

let indexNo = InfoArray.indexOf { $0.NO == NumberID}



self.InfoArray[indexNo!] = InfoStruct(NO: self.NumberID, MenuItemName: contact.givenName, MenuItemFamily: contact.familyName, MenuImage: userImage, PhoneNumber: telephone)


InfoArray[indexPath.row].MenuItemFamily

반응형
반응형

http://pinkstone.co.uk/how-to-kill-your-app-when-it-enters-background-mode/


홈버튼을 눌러 백그라운드로 갔을 경우 앱을 실행시키지 않는다.



다시 실행하면 앱은 사용했던 화면을 보여주지 않고 새로 시작된다.

반응형
반응형



let nav = self.navigationController?.navigationBar 

nav?.barTintColor = UIColor(red: 237.0/255.0, green: 237.0/255.0, blue: 242.0/255.0, alpha: 1.0) 

nav?.tintColor = UIColor(red: 0/255.0, green: 123.0/255.0, blue: 255.0/255.0, alpha: 1.0) 

nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.blackColor()] 



반응형
반응형


func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    // you can also programmatically calculate a desired

    if(indexPath.section==0) { //첫번째 섹션 일때 

        return 80  // 크기를 80으로 지정

    } else {           

        return 44

    }

    return 0 

}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     cell.HomeMenuItemLabel.numberOfLines = 4; //셀의 라인을 4줄까지 한다. 



주의 할 점은 셀크기가 작으면 셀의 라인을 늘려도 보여지지 않는다.

적절한 크기로 잘 맞춰야 할 듯...

반응형
반응형

self.performSegueWithIdentifier("loginView", sender: self)




반응형
반응형

* 원본 소스

let URL = NSURL(string: "https://roads.googleapis.com/v1/snapToRoads?path=-35.27801,149.12958|-35.28032,149.12907")!


* 에러 발생

fatal error: unexpectedly found nil while unwrapping an Optional value


* 해결

var stringUrl = "https://roads.googleapis.com/v1/snapToRoads?path=-35.27801,149.12958|-35.28032,149.12907"

let URL = NSURL(string: stringUrl.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)!



반응형
반응형

- Remove empty space before cells in UITableViewRemove empty space before cells in UITableView 


http://stackoverflow.com/questions/18906919/remove-empty-space-before-cells-in-uitableview


override func viewDidLoad() {

    super.viewDidLoad()

    self.automaticallyAdjustsScrollViewInsets = false

    // Do any additional setup after loading the view, typically from a nib. 

}


반응형
반응형

앱의 고유번호를 확인 UDID 사용한다. 그러나 애플에서는 UDID 언제부터인가 사용을 제안하고 있다.

UDID를 대체하는 것이 UUID 이다.


swift에서 UUID 값을 가져오는 방법은 아래와 같다.

let UUID = getUUID()

print(UUID)


func getUUID() -> NSString {

    let UID = CFUUIDCreate(kCFAllocatorDefault)

    let UID2 = CFUUIDCreateString(kCFAllocatorDefault, UID);

    let GETID = UID2 as NSString

        

    return GETID.lowercaseString

}


UDID는 아래 URL에 설명이 있다.

http://ibeta.kr/?mid=FAQ&category=579&document_srl=176&sort_index=readed_count&order_type=desc


UDID itunes에서 확인이 가능하다. 아래 그림의 모델 식별자를 클릭하면 일련번호, UDID, ECID 도 확인 가능하다.

마우르 우클릭(?) 하면 복사도 가능 함.



반응형
반응형

AppIcon 이미지를 넣어서 핸드폰에서 확인 하였을 때 아이콘 주위에 검은색 테두리가 생겼다.


해결 방법은 간단하다. 


1. 적용한 원본 이미지를 자세히 보라.

2. 확장자가 png인지 확인하여라

3. 이미지 전체 사이즈 주위에 하얀색 테두리가 있지 않은지 보아라.


참고로 이미지를 만들때 테두리 곡선을 나타내기 위하여 하얀색 부분을 살짝 남기는 경우가 있는데,

사각형으로 이미지 크기만큼 둘레를 전체 색칠 해주어라.

걱정하지 않아도 되는 것이 아이폰에서 자동으로 곡선테두리가 생겨나기 때문이다.










반응형

'Programming > Swift' 카테고리의 다른 글

tableView prototype cell 부분을 보여주지 않으려면  (0) 2016.07.06
UUID 와 UDID  (0) 2016.07.05
AppIcon 검은색 테두리  (0) 2016.06.22
viewWithTag  (0) 2016.06.21
process launch failed: failed to get the task for process [1383]  (0) 2016.05.24
will be removed in Swift 3  (0) 2016.03.22
반응형

let close : UIButton = (cell.viewWithTag(102) as! UIButton)




반응형

'Programming > Swift' 카테고리의 다른 글

UUID 와 UDID  (0) 2016.07.05
AppIcon 검은색 테두리  (0) 2016.06.22
viewWithTag  (0) 2016.06.21
process launch failed: failed to get the task for process [1383]  (0) 2016.05.24
will be removed in Swift 3  (0) 2016.03.22
해당 프로젝트에서 cocoapods 삭제 방법  (0) 2016.03.18
반응형

앱 테스트를 할 때, 아래와 같은 메세지가 출력 된다.

약간 인증서 문제인 것 같은데 뭐가 잘못 되었는지 모르겠다.


결론은 Build Settings에 있는 코드사인이 문제이다.


Provisioning Profile을 Automatic으로 설정하고

Any iOS SDK를 iOS Developer로 설정해준다.


그리고 실행을 시키면 애플 개발자계정 비번을 넣으면 실행이된다.

반응형

'Programming > Swift' 카테고리의 다른 글

AppIcon 검은색 테두리  (0) 2016.06.22
viewWithTag  (0) 2016.06.21
process launch failed: failed to get the task for process [1383]  (0) 2016.05.24
will be removed in Swift 3  (0) 2016.03.22
해당 프로젝트에서 cocoapods 삭제 방법  (0) 2016.03.18
SQLite 쿼리 실행  (0) 2016.03.16
반응형

Swift2.0
Swift3.0
typealias UnderlyingType = Void
associatedtype UnderlyingType = Void
@warn_unused_result func infix<T>(lhs: Expressible, _ rhs: Expressible, wrap: Bool = true, function: String = __FUNCTION__) -> Expression<T> {
   
return function.infix(lhs, rhs, wrap: wrap)
}
@warn_unused_result func infix<T>(lhs: Expressible, _ rhs: Expressible, wrap: Bool = true, function: String = #function) -> Expression<T> {
    return function.infix(lhs, rhs, wrap: wrap)
}
anyGenerator { statement.next().map { Row(columnNames, $0) } }
AnyGenerator { statement.next().map { Row(columnNames, $0) } }
_decelerationDisplayLink = CADisplayLink(target: self, selector: Selector("decelerationLoop"))
_decelerationDisplayLink = CADisplayLink(target: self, selector: #selector(BarLineChartViewBase.decelerationLoop))
for var i = 0; i < FinalPeriod; i++ { yVals3.append(ChartDataEntry(value: dollars3[i], xIndex: i))
        }
for i in 0 ..< FinalPeriod {            yVals3.append(ChartDataEntry(value: dollars3[i], xIndex: i))
        }
let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard")
let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(RegisterViewController.DismissKeyboard))
for var i = 0; i < period.count; i++ {            yVals2.append(ChartDataEntry(value: dollars2[i], xIndex: i))
        }
for i in 0 ..< period.count {
yVals2.append(ChartDataEntry(value: dollars2[i], xIndex: i))
        }
count--
count -= 1
closestIndex++
closestIndex += 1
for (var i = from; i < to; i += 1)
for i in from ..< to
private func performPanChange(var translation translation: CGPoint) -> Bool
    {
}
private func performPanChange(translation translation: CGPoint) -> Bool
    {
var translation  = translation
}
for (var i = start; i <= endValue; i++) {
}
for i in start…endValue {
}
for (var i = _minX, maxX = min(_maxX + 1, _xAxis.values.count); i < maxX; i += _xAxis.axisLabelModulus) {
}
for i in _minX.stride(to: min(_maxX + 1, _xAxis.values.count), by: _xAxis.axisLabelModulus) {
}
for var i = 10; i >= 0; --{
   print
(i)
}
for i in (0...10).reverse() {
    print
(i)
}
for (; m < high; m++) {
}
while(m<high) {
m += 1
}
for (var j = 0; j < clrs.count && j < entryCount; j++) {
}
for j in 0 ..< clrs.count {
    if j < entryCount {
    }
}
for (var j = 0; j < clrs.count && j < entryCount && j < xVals.count; j++) {
}
for j in 0 ..< clrs.count {
    if j < entryCount && j < xVals.count {
    }
}
var idx = 0
return expressed.template.characters.reduce("") { template, character in
            return template + (character == "?" ? transcode(expressed.bindings[idx++]) : String(character))
        }
var idx = 0
idx += 1
return expressed.template.characters.reduce("") { template, character in
            return template + (character == "?" ? transcode(expressed.bindings[idx]) : String(character))
        }
for (var i = _minX; i <= _maxX; i += _xAxis.axisLabelModulus) {
}
var i = _minX
while(i <= _maxX) {
    i += _xAxis.axisLabelModulus
}
for (var i = 0, count = _velocitySamples.count; i < count - 2; i++) {
    if (currentTime - _velocitySamples[i].time > 1.0) {
        _velocitySamples.removeAtIndex(0)
        i -= 1
        count -= 1
    } else {
        break
    }
}
var i = 0
var count = _velocitySamples.Count
while(i < count - 2) {
    if (currentTime - _velocitySamples[i].time > 1.0) {
        _velocitySamples.removeAtIndex(0)
        i -= 1
        count -= 1
    } else {
        break
    }
    i += 1
}
@warn_unused_result public static func FTS4(var columns: [Expressible] = [], tokenize tokenizer: Tokenizer? = nil) -> Module {
        if let tokenizer = tokenizer {
            columns.
append("=".join([Expression<Void>(literal: "tokenize"), Expression<Void>(literal: tokenizer.description)]))
        }
       
return Module(name: "fts4", arguments: columns)
    }
@warn_unused_result public static func FTS4(columns: [Expressible] = [], tokenize tokenizer: Tokenizer? = nil) -> Module {
        var columns = columns
       
       
if let tokenizer = tokenizer {
            columns.
append("=".join([Expression<Void>(literal: "tokenize"), Expression<Void>(literal: tokenizer.description)]))
        }
       
return Module(name: "fts4", arguments: columns)
    }




반응형

'Programming > Swift' 카테고리의 다른 글

viewWithTag  (0) 2016.06.21
process launch failed: failed to get the task for process [1383]  (0) 2016.05.24
will be removed in Swift 3  (0) 2016.03.22
해당 프로젝트에서 cocoapods 삭제 방법  (0) 2016.03.18
SQLite 쿼리 실행  (0) 2016.03.16
application 이름 변경  (0) 2016.03.16
반응형

http://stackoverflow.com/questions/16427421/how-to-remove-cocoapods-from-a-project

  1. Delete the standalone files (Podfile Podfile.lock and your Pods directory)
  2. Delete the generated xcworkspace
  3. Open your xcodeproj file, delete the references to Pods.xcconfig and libPods.a (in the Frameworks group)
  4. Under your Build Phases delete the Copy Pods ResourcesEmbed Pods Frameworks andCheck Pods Manifest.lock phases.
  5. This may seem obvious but you'll need to integrate the 3rd party libraries some other way or remove references to them from your code.



1.해당 프로젝트 폴더에 가서 Podfile, Podfile.lock, Pods폴더를 삭제하라.

2.cocoapods 설치시 자동 생성되었던 xcworkspace 확장자 파일도 지워라.

3.해당 프로젝트를 열고, Pods.xcconfig와 libPods.a 를 삭제하여라(libPods.a는 Frameworks 그룹안에 있다)

4.Project->Target->프로젝트명에 가면 Build Phases 가 있다. 거기 아래에 Copy Pods Resources, Embed Pods Framworks, Check Pods Manifest.lock 를 지워라.

5.위 삭제방법이 정확하지 않을 수 있다. 이것말고 다른 라이브러리 라던가 있을 수 있따(?)


요정도로 보면 될 것같은데..나는 이렇게 하니깐 됨.

반응형

'Programming > Swift' 카테고리의 다른 글

process launch failed: failed to get the task for process [1383]  (0) 2016.05.24
will be removed in Swift 3  (0) 2016.03.22
해당 프로젝트에서 cocoapods 삭제 방법  (0) 2016.03.18
SQLite 쿼리 실행  (0) 2016.03.16
application 이름 변경  (0) 2016.03.16
iOS 동영상 강좌  (0) 2016.02.24
반응형


/*SQLite*/

//로컬에서 데이터 저장경로

//let db = try Connection("/Users/goodgods/Documents/development/MyApp/db.sqlite3")


// Get document directory path from your phone  -> 모바일에서 경로찾아 저장함

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String

do {

    let db = try Connection("\(path)/db.sqlite3")

                    

    let users = Table("users")

    let id = Expression<String>("id")

                    

    try db.run(users.create(ifNotExists: true) { t in     // CREATE TABLE "users" (

    t.column(id, primaryKey: true//     "id" INTEGER PRIMARY KEY NOT NULL,

//                t.column(email, unique: true)  //     "email" TEXT UNIQUE NOT NULL,

//                t.column(name)                 //     "name" TEXT

})

                    

    try db.run(users.delete())

    try db.run(users.insert(id <- authorizationCode!))

} catch let error as NSError {


}


반응형

'Programming > Swift' 카테고리의 다른 글

will be removed in Swift 3  (0) 2016.03.22
해당 프로젝트에서 cocoapods 삭제 방법  (0) 2016.03.18
SQLite 쿼리 실행  (0) 2016.03.16
application 이름 변경  (0) 2016.03.16
iOS 동영상 강좌  (0) 2016.02.24
appstore에서 xcode가 다운로드 되지 않을때  (0) 2016.01.08
반응형

Info.plist 아래와 같이 추가 해준다.



반응형

'Programming > Swift' 카테고리의 다른 글

해당 프로젝트에서 cocoapods 삭제 방법  (0) 2016.03.18
SQLite 쿼리 실행  (0) 2016.03.16
application 이름 변경  (0) 2016.03.16
iOS 동영상 강좌  (0) 2016.02.24
appstore에서 xcode가 다운로드 되지 않을때  (0) 2016.01.08
살짝 다른 문법(?)  (0) 2015.12.30
반응형

독학을 하면서 굉장히 많은 도움을 준 사이트 들이다.


https://www.youtube.com/watch?v=xwyhCovrScQ&feature=youtu.be


3.Left side menu (Navigation Drawer) example with Swift
http://swiftdeveloperblog.com/left-side-menu-navigation-drawer-example-with-swift/

4.Swift UIActivityIndicatorView Example 1. Using storyboard.
http://swiftdeveloperblog.com/store-user-information-in-mysql-database/
 Video #1

5.Send HTTP POST Request example using Swift and PHP
http://swiftdeveloperblog.com/send-http-post-request-example-using-swift-and-php/

6.How to Use iOS Charts API to Create Beautiful Charts in Swift
http://www.appcoda.com/ios-charts-api-tutorial/

7. How to create a Line Chart using ios-charts

8.Adding multiple lines to your Line Chart using ios-charts

9.How to parse JSON with Swift2

10.Want your Swift app to scroll in two directions, like Netflix? Here’s how.

11.How to make a simple collection view with Swift

12.How to Pass Data from View Controller (Swift : Xcode)

13.Passing Data Between Table Views using Structs and Arrays (Swift : Xcode)

14. How To Create an Expandable Table View in iOS

15.UISwitch로 하위 메뉴 숨기기

16. UISlider example (iOS Slider) using swift

17. iOS Login and Signup Screen tutorial : Swift + XCode 6 + iOS 8 + JSON

18. UIPickerView Example Introduction


19.Add 3D Touch to your apps



반응형

'Programming > Swift' 카테고리의 다른 글

SQLite 쿼리 실행  (0) 2016.03.16
application 이름 변경  (0) 2016.03.16
iOS 동영상 강좌  (0) 2016.02.24
appstore에서 xcode가 다운로드 되지 않을때  (0) 2016.01.08
살짝 다른 문법(?)  (0) 2015.12.30
swift 입문 소스  (0) 2015.11.26
반응형

apple Developer 사이트에서 개발자 로그인 후에 다운로드한다.


apple developer

반응형

'Programming > Swift' 카테고리의 다른 글

application 이름 변경  (0) 2016.03.16
iOS 동영상 강좌  (0) 2016.02.24
appstore에서 xcode가 다운로드 되지 않을때  (0) 2016.01.08
살짝 다른 문법(?)  (0) 2015.12.30
swift 입문 소스  (0) 2015.11.26
시뮬레이션 할 때 키보드가 보이지 않는다?  (0) 2015.11.25
반응형

- ERROR 관련(?) 은  swift 2.0부터 syntax 가 바뀜


 * old

var err: NSError?

var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary

if let parseJSON =myJSON {

// Now we can access value of First Name by its key

var firstNameValue = parseJSON[“firstName”] as? String

println(“firstNameValue: \(firstNameValue)”)

}


 * new(swift 2.0)

do {

    if let parseJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary {

        // Now we can access value of First Name by its key

        let firstNameValue:String = parseJSON["firstName"] as! String

        print("firstNameValue: \(firstNameValue)")

    }       

} catch {

    print(error)

}


 - 결과 값에 optional 값이 같이 출력됨.(print)

명령어 

결과값 

 print(“op :  \(option)")

 op : optional(VALUE)

 print(“op :  \(option)!)

 op :VALUE


반응형
반응형

// playground 에서 아래 소스를 실행해 보자.

1.

//: Playground - noun: a place where people can play

import UIKit


class ExamClass {

    deinit {

        print("deinit")

    }

}


2.

import UIKit


var exam: ExamClass? = ExamClass()

exam = nil


for i in 0...10 {

    i * i

}


3.

import UIKit

import XCPlayground


let circleRect = CGRectMake(0,0,300,300)

class CircleView: UIView {

    override func drawRect(rect: CGRect) {

        let context:CGContextRef = UIGraphicsGetCurrentContext()!

        UIColor.whiteColor().setFill()

        CGContextFillRect(context, rect)

        UIColor.blackColor().setFill()

        CGContextFillEllipseInRect(context,circleRect)

    }

}


let view = CircleView(frame: circleRect)

XCPShowView("뷰어",view:view)


4.

import UIKit

import XCPlayground


XCPSetExecutionShouldContinueIndefinitely(true)


class Exam: NSObject {

    func timerStart() {

        NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "chk", userInfo: nil, repeats:true)

    }

    

    var cnt = 0

    func chk() {

        print("timer check!")

    }

}


let exam = Exam()

exam.timerStart()


5.

import UIKit

import XCPlayground


XCPSetExecutionShouldContinueIndefinitely(true)


class Exam: NSObject {

    func timerStart() {

        NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "chk", userInfo: nil, repeats:true)

    }

    

    var cnt = 0

    func chk() {

        XCPCaptureValue("count", value:++cnt)

        XCPCaptureValue("random", value:arc4random_uniform(100))    //난수 발생

    }

}


let exam = Exam()

exam.timerStart()


6.

import UIKit

import XCPlayground


let chk:Int? = 2

let db:[String] = ["","서울","대전","부산"]


if let unrapedChk = chk {

    let sido = db[unrapedChk]

    print(sido)

else {

    print("Error")

}


7.

class SwiftLab: CustomStringConvertible {

    var description: String {

        return "안녕하세요"

    }

}


let sLab = SwiftLab()

print(sLab)


8.

let apple = 5

assert(apple < 10"10개미만")

반응형
반응형

제목 그대로, 시뮬레이션 할 때 키보드가 보여지지 않는 경우는


시뮬레이터 화면을 클릭하고 상단 메뉴에 Hardware 가 있다.

Keyboard의 Toggle Software Keyboard 선택하면 된다.


Hardware - Keyboard - Toggle Software Keyboard

반응형

+ Recent posts